所以我有一个[Python2.7]熊猫数据框(df),如下所示:
name flag dummy_D random ID dummy_S dummy_T
0 Mick Purple 2 NaN 1 21 32
1 John Red NaN NaN 2 w32 4
2 Christine NaN 2 NaN 2 w33 3
3 Stevie NaN 4 NaN 2 w34 2
4 Lindsey NaN 5 NaN 2 w35 NaN
我想用以前的值替换列中所有用'dummy'表示的NaN(并且只有这些列,而其余的数据帧保持不变)
以下是我所做的:
dummycol = [col for col in df.columns if 'dummy' in col]
for d in dummycol:
df[d] = df[d].fillna(method = 'pad')
我的问题是:
熊猫有没有更好的方法(在编码和内存效率方面)来做到这一点,而不是浪费内存来创建一个列表+循环?最好有一个单一的解决方案!
多谢提前!
威尔
最佳答案
您可以这样做,这样就可以对列调用str.startswith
以获取感兴趣的列,然后同时对所有这些列调用fillna
:
In [152]:
cols = df.columns[df.columns.str.startswith('dummy')]
df[cols] = df[cols].fillna(method='pad')
df
Out[152]:
name flag dummy_D random ID dummy_S dummy_T
0 Mick Purple 2 NaN 1 21 32
1 John Red 2 NaN 2 w32 4
2 Christine NaN 2 NaN 2 w33 3
3 Stevie NaN 4 NaN 2 w34 2
4 Lindsey NaN 5 NaN 2 w35 2
关于python - Python Pandas:按列名将更改应用于特定列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32461331/