繁体   English   中英

将 function 应用于多行 pandas

[英]Apply function to multiple row pandas

假设我有一个这样的 dataframe

               0         5         10        15        20        25      ...
action_0_Q0  0.299098  0.093973  0.761735  0.058112  0.013463  0.164322  ... 
action_0_Q1  0.463095  0.468425  0.202679  0.742424  0.865005  0.479546  ... 
action_0_Q2  0.237807  0.437602  0.035587  0.199465  0.121532  0.356132  ... 
action_1_Q0  0.263191  0.176407  0.471295  0.082457  0.029566  0.426428  ... 
action_1_Q1  0.508573  0.490355  0.431732  0.249432  0.189732  0.396947  ... 
action_1_Q2  0.228236  0.333238  0.096973  0.668111  0.780702  0.176625  ... 
action_2_Q0  0.256632  0.122589  0.495720  0.059918  0.824424  0.384998  ... 
action_2_Q1  0.485362  0.462969  0.420790  0.211578  0.155771  0.186493  ... 
action_2_Q2  0.258006  0.414442  0.083490  0.728504  0.019805  0.428509  ...

这个dataframe可能很大(很多行,大概3000列)。 我要做的是将 function 应用于每一列,这又会返回一个距离矩阵。 但是,应该通过一次考虑 3 行来应用这样的 function。 例如,取第一列:

a = distance_function([[0.299098, 0.463095, 0.237807], [0.263191, 0.508573, 0.228236], [0.256632, 0.485362, 0.258006]])

# Returns

print(a.shape) -> (3,3)

现在,通过 for 循环并不太复杂,但所需的时间会很长。 有其他方法吗?

IIUC 使用:

df = df.apply(lambda x: distance_function(x.to_numpy().reshape(-1,3)))

如果需要展平值:

from itertools import chain

df = df.apply(lambda x: list(chain.from_iterable(distance_function(x.to_numpy().reshape(-1,3))))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM