按列名将更改应用于特定列

按列名将更改应用于特定列

所以我有一个[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/

10-10 17:24