【发布时间】:2021-09-28 21:00:05
【问题描述】:
我正在处理一个巨大的 csv 文件。我正在尝试将列相乘,但它不会让我这样做,因为有很多空单元格。所以基本上我要做的是编写一个 if else 语句,如果单元格为空,则该单元格副本是它上面的值,如果它上面没有值(比如在第 1 行,它上面的唯一值是标题) 它应该只写 0(零)。我主要需要帮助的是构建 if else 语句。
【问题讨论】:
标签: python pandas dataframe csv null
我正在处理一个巨大的 csv 文件。我正在尝试将列相乘,但它不会让我这样做,因为有很多空单元格。所以基本上我要做的是编写一个 if else 语句,如果单元格为空,则该单元格副本是它上面的值,如果它上面没有值(比如在第 1 行,它上面的唯一值是标题) 它应该只写 0(零)。我主要需要帮助的是构建 if else 语句。
【问题讨论】:
标签: python pandas dataframe csv null
对于数据框中的每一列,使用fillna 方法将None 单元格的值替换为该列中前一行的值。对于列中的第一行,您可以手动分配该 0。我所说的可以通过执行以下操作来完成:
for col in list(df):
df[col].fillna( method ='ffill', inplace = True)
if(df[col][0] == None):
df[col][0] = 0
【讨论】:
if(df[col][0] == None && col in desiredColumnList):
要同时在所有列上执行此操作,您可以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
【讨论】: