我有一个相当大的数据框,其中包含数百个功能(列),我喜欢使用列名称上的过滤方法来访问它的子集:
X = df.filter(regex='d2v_*')
这效果很好,但现在我正在尝试通过 X
的转换来更改 df
这个特定子集的值,例如 X - X .mean(axis=0)
.
我很想使用基于列名称的掩码,但也许有更好的解决方案?
最佳答案
您可以执行类似的操作:
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
关于python - 将值分配给由正则表达式获得的一组列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40392775/