我试图填补一个熊猫数据框架与0的值只有一些列的子集。
当我这样做的时候:
import pandas as pd
df = pd.DataFrame(data={'a':[1,2,3,None],'b':[4,5,None,6],'c':[None,None,7,8]})
print df
df.fillna(value=0, inplace=True)
print df
输出:
a b c
0 1.0 4.0 NaN
1 2.0 5.0 NaN
2 3.0 NaN 7.0
3 NaN 6.0 8.0
a b c
0 1.0 4.0 0.0
1 2.0 5.0 0.0
2 3.0 0.0 7.0
3 0.0 6.0 8.0
它将每个None替换为0。我要做的是,只替换a和b列中的none,而不是c列。
做这件事最好的方法是什么?
由于一些奇怪的原因,这个没有工作(使用Pandas: '0.25.1')
df[['col1', 'col2']].fillna(value=0, inplace=True)
另一个解决方案:
subset_cols = ['col1','col2']
[df[col].fillna(0, inplace=True) for col in subset_cols]
例子:
df = pd.DataFrame(data={'col1':[1,2,np.nan,], 'col2':[1,np.nan,3], 'col3':[np.nan,2,3]})
输出:
col1 col2 col3
0 1.00 1.00 nan
1 2.00 nan 2.00
2 nan 3.00 3.00
将列表comp.应用于fillna值:
subset_cols = ['col1','col2']
[df[col].fillna(0, inplace=True) for col in subset_cols]
输出:
col1 col2 col3
0 1.00 1.00 nan
1 2.00 0.00 2.00
2 0.00 3.00 3.00
由于一些奇怪的原因,这个没有工作(使用Pandas: '0.25.1')
df[['col1', 'col2']].fillna(value=0, inplace=True)
另一个解决方案:
subset_cols = ['col1','col2']
[df[col].fillna(0, inplace=True) for col in subset_cols]
例子:
df = pd.DataFrame(data={'col1':[1,2,np.nan,], 'col2':[1,np.nan,3], 'col3':[np.nan,2,3]})
输出:
col1 col2 col3
0 1.00 1.00 nan
1 2.00 nan 2.00
2 nan 3.00 3.00
将列表comp.应用于fillna值:
subset_cols = ['col1','col2']
[df[col].fillna(0, inplace=True) for col in subset_cols]
输出:
col1 col2 col3
0 1.00 1.00 nan
1 2.00 0.00 2.00
2 0.00 3.00 3.00