对数据帧列的子集使用“apply”方法的有效方法是什么?

2024-04-25 22:35:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,我想跨行应用“apply”方法,但我只需要在列的子集上(比如说,60%)这样做。我在想什么是有效的方法?你知道吗

我知道我可以使用set\ u index将其余不需要的列存储到索引中,然后将其重置回来,但我很好奇是否有更有效的方法来实现这一点。你知道吗

我当然可以做到:

df_new=df[[x1,x2,...xn]].apply(function, axis=0)

但问题是它df_new会丢失其余的列(和索引),因此很难将其恢复到预期的输出,即“apply”仅应用于特定数量的选定列的原始帧。 有什么想法/建议吗?你知道吗


Tags: 数据方法dfnew数量indexfunction子集
1条回答
网友
1楼 · 发布于 2024-04-25 22:35:48

您只需将结果分配给df的相同子集:

np.random.seed(0)
df = pd.DataFrame(np.random.randn(5, 4))
print(df)
          0         1         2         3
0  1.764052  0.400157  0.978738  2.240893
1  1.867558 -0.977278  0.950088 -0.151357
2 -0.103219  0.410599  0.144044  1.454274
3  0.761038  0.121675  0.443863  0.333674
4  1.494079 -0.205158  0.313068 -0.854096

df[[1, 2]] = df[[1, 2]].apply(lambda x: 100 + x)
print(df)

          0           1           2         3
0  1.764052  100.400157  100.978738  2.240893
1  1.867558   99.022722  100.950088 -0.151357
2 -0.103219  100.410599  100.144044  1.454274
3  0.761038  100.121675  100.443863  0.333674
4  1.494079   99.794842  100.313068 -0.854096

如果要保留原始数据帧,请创建一个副本。你知道吗

如果您有混合的数据类型,这可能不起作用。你知道吗

相关问题 更多 >