【问题标题】:how to make changes in empty spaces in csv file?如何更改csv文件中的空白?
【发布时间】:2021-09-28 21:00:05
【问题描述】:

我正在处理一个巨大的 csv 文件。我正在尝试将列相乘,但它不会让我这样做,因为有很多空单元格。所以基本上我要做的是编写一个 if else 语句,如果单元格为空,则该单元格副本是它上面的值,如果它上面没有值(比如在第 1 行,它上面的唯一值是标题) 它应该只写 0(零)。我主要需要帮助的是构建 if else 语句。

This is the screenshot of DataFrame I am working with

【问题讨论】:

    标签: python pandas dataframe csv null


    【解决方案1】:

    对于数据框中的每一列,使用fillna 方法将None 单元格的值替换为该列中前一行的值。对于列中的第一行,您可以手动分配该 0。我所说的可以通过执行以下操作来完成:

    for col in list(df):
        df[col].fillna( method ='ffill', inplace = True)
        if(df[col][0] == None):
            df[col][0] = 0
    

    【讨论】:

    • 谢谢。有没有办法在第一行的所有空单元格中填充零。还有一种方法可以将零仅放在第一行的选定列上。我主要想做后者
    • 实际上您可以使用给定的代码来做到这一点,只需创建一个所需列的列表,如果为空,您希望将 0 放在第一行并将 if 条件修改为 if(df[col][0] == None && col in desiredColumnList):
    • @Rookie18,如果这回答了您的问题,请考虑accepting 答案
    【解决方案2】:

    要同时在所有列上执行此操作,您可以ffill 然后fillna

    import pandas as pd
    
    df = pd.DataFrame({'a': [None, 1, None], 'b': [2, None, None]})
    df.ffill().fillna(0)
    

    给予

         a    b
    0  0.0  2.0
    1  1.0  2.0
    2  1.0  2.0
    

    【讨论】:

      猜你喜欢
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2020-05-09
      相关资源
      最近更新 更多