代码之家  ›  专栏  ›  技术社区  ›  ch1maera

替换现有列.csv中的值

  •  1
  • ch1maera  · 技术社区  · 7 年前

    [' ', 1, 2, 3, 4, 5] 哪里 表示空单元格。我想遍历.csv中的所有行,并用另一个值替换每行第一列中的所有值,即。 [100, 1, 2, 3, 4, 5] . 这怎么可能呢?还值得注意的是,这些列没有标签(它们是从.xlsx转换而来的)。

    for i, row in test.iterrows():
        value = randomFunc(x, row)
    
        test.loc[test.index[i], 0] = value
    

    但这会在末尾添加一个标签为0的列。

    4 回复  |  直到 7 年前
        1
  •  2
  •   jezrael    7 年前

    使用 iloc 对于“按位置选择第一列”,请使用 replace 由正则表达式指定零个或多个空格:

    df = pd.DataFrame({
            0:['',20,' '],
             1:[20,10,20]
    })
    
    
    df.iloc[:, 0] = df.iloc[:, 0].replace('^\s*$',100, regex=True)
    print (df)
         0   1
    0  100  20
    1   20  10
    2  100  20
    
        2
  •  2
  •   Karn Kumar    7 年前

    下面就是一个例子 b c 是空的,被替换为 replace 方法:

     import pandas as pd
     import numpy as np
    
    >>> df
       0
    a  1
    b
    c
    
    >>> df.replace('', 100, inplace=True)
    >>> df
         0
    a    1
    b  100
    c  100
    

    替换特定列中的空单元格的示例:

    在下面的示例中,我们有两列 col1 col2 哪里 可乐 在索引2和索引4处有空单元格的 可乐 .

    >>> df
      col1 col2
    0    1    6
    1    2    7
    2
    3    4
    4        10
    

    只是为了替换上面提到的空单元格 可乐 仅:

    然而,当我们说 可乐 然后它意味着从所有行到列本身,这在某种意义上是方便的。

    >>> df.col1.replace('', 100, inplace=True)
    >>> df
       col1 col2
    0     1    6
    1     2    7
    2   100
    3     4
    4   100   10
    

    另一种选择特定于DataFrame列的方法:

    >>> df['col1'] =  df.col1.replace('', 100, regex=True)
    >>> df
       col1 col2
    0     1    6
    1     2    7
    2   100
    3     4
    4   100   10
    
        3
  •  0
  •   Sanchit Kumar    7 年前

    你为什么不这样做:

    df = pd.DataFrame([1, ' ', 2, 3, ' ', 5, 5, 5, 6, 7, 7])
    df[df[0] == " "] = rd.randint(0,100)
    

        0
    0   1
    1   10
    2   2
    3   3
    4   67
    5   5
    6   5
    7   5
    8   6
    9   7
    10  7
    
        4
  •  0
  •   Sagun Shrestha    7 年前

    csv 模块

    import csv
    your_value = 100    # value that you want to replace with
    with open('input.csv', 'r') as infile, open('output.csv', 'w') as outfile:
        reader = csv.reader(infile)
        writer = csv.writer(outfile)
        for row in reader:
            row[0] = your_value
            writer.writerow(row)