Python 什么是有效的使用方法;套用;数据帧列子集上的方法?
我有一个数据帧,我想跨行应用“apply”方法,但我只需要在列的子集上(比如说,60%)这样做。我想知道做这件事的有效方法是什么 我知道我可以使用set_index将其余不需要的列隐藏到索引中,然后将其重置回来,但我很好奇是否有更有效的方法来实现这一点 我当然可以做到:Python 什么是有效的使用方法;套用;数据帧列子集上的方法?,python,pandas,Python,Pandas,我有一个数据帧,我想跨行应用“apply”方法,但我只需要在列的子集上(比如说,60%)这样做。我想知道做这件事的有效方法是什么 我知道我可以使用set_index将其余不需要的列隐藏到索引中,然后将其重置回来,但我很好奇是否有更有效的方法来实现这一点 我当然可以做到: df_new=df[[x1,x2,...xn]].apply(function, axis=0) 但问题是它会丢失其余的列(和索引),因此很难将其恢复到预期的输出,即仅对特定数量的选定列应用“apply”的原始帧。 有什么想法
df_new=df[[x1,x2,...xn]].apply(function, axis=0)
但问题是它会丢失其余的列(和索引),因此很难将其恢复到预期的输出,即仅对特定数量的选定列应用“apply”的原始帧。
有什么想法/建议吗?您可以将结果分配给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
如果要保留原始数据帧,请制作副本
如果您有混合的数据类型,这可能不起作用。此方法是什么?您可以使用百分比来计算df,然后屏蔽df并应用您的函数,但理想情况下,您只需在df的该部分调用矢量化函数。请使用更多详细信息、原始输入数据、代码和所需输出更新您的问题