将值分配给由regex获取的一组列

时间:2016-11-03 02:15:09

标签: python regex pandas dataframe

我有相当大的数据框,有数百个功能(列),我喜欢使用列名称上的过滤方法访问它的一个子集:

X = df.filter(regex='d2v_*')

这很有效,但现在我正在尝试使用df的转换来更改此X特定子集的值,例如X - X.mean(axis=0)

我很想使用基于列名的掩码,但也许有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

你可以做类似的事情:

In [72]: df
Out[72]:
    a   b  d2v_1  d2v_2  d2v_3   x
0  97  19     53      2     29  19
1  74  23      8     80     22  76
2  27  41     72     76     48  62
3   6  90     71     53      7  87
4  21  61     14     64     17  19

In [75]: cols = df.columns[df.columns.str.contains(r'^d2v_')]

In [76]: cols
Out[76]: Index(['d2v_1', 'd2v_2', 'd2v_3'], dtype='object')

In [77]: df.loc[:, cols] -= df.loc[:, cols].mean()

In [78]: df
Out[78]:
    a   b  d2v_1  d2v_2  d2v_3   x
0  97  19    9.4  -53.0    4.4  19
1  74  23  -35.6   25.0   -2.6  76
2  27  41   28.4   21.0   23.4  62
3   6  90   27.4   -2.0  -17.6  87
4  21  61  -29.6    9.0   -7.6  19