更新数据框以nan填充列

时间:2018-08-17 09:28:53

标签: python pandas dataframe

在我的DataFrame中,我先用nan替换大于某个值的值,然后使用相同的列名创建另一个DataFrame并用随机数填充。然后,用新创建的DataFrame更新原始nan,但是在我首先设置列nan的值的行中,所有其他列都变为nan。该列中带有pandas的原始行没有相同的问题。这是我在df[df['column_name'] > 40] = np.nan column_series = df['column_name'] null_indices = column_series[column_series.isnull()].index random_df = pd.DataFrame(np.random.normal(mu, sigma, size=len(null_indices)), index=null_indices, columns=['column_name']) df.update(random_df) 语法中的意思:

nan

以下一些数字可以更好地说明情况:

在用> 40替换值nan之前,该列中6685022的数量:> 40: 329066

列值为nan的行数

替换后,除column_name以外的每一列中有329066的行数:<div *ngFor="let a of [1,2,3,4]; let i = index" (click)="getValue(a)"> <input type="checkbox" name="alarm_check" id="index_{{i+1}}"> </div>

4 个答案:

答案 0 :(得分:0)

使用此推荐方法:

df.loc[df['coulmn_name'] > 40, 'column_name'] = np.nan

答案 1 :(得分:0)

如果df[df['column_name'] > 40] = np.nan中的值> 40,则

df将用空值填充整个column_name

Nihal是正确的,但我更喜欢这种形式(更清洁的imo):

df.column_name.loc[df.column_name > 40] = np.nan

PS:最好使用Jupyter Notebook查看每个步骤中DataFrame的外观。

答案 2 :(得分:0)

这可能有用

df.ix[df['column_name'] > 40,'column_name'] = np.nan # or indexof columns
column_series = df['column_name']
null_indices = column_series[column_series.isnull()].index
random_df = pd.DataFrame(np.random.normal(mu, sigma, size=len(null_indices)), 
index=null_indices, columns=['column_name'])
df.update(random_df)

答案 3 :(得分:0)

问题只出现在您的第一句话上

df[df['column_name'] > 40] = np.nan

表示“用nan替换所选行中的所有值”。所以命令

df.update(random_df)

继承。