如何解决在DataFrame上使用.apply
我已经看到了R的问题,但没有看到python的问题。
基本上,我有一个很大的DataFrame,在其中逐行应用一个函数。运行需要很长时间,我希望打印一份声明以显示我的位置。我举了一个我想做的事的例子。
我知道一种替代方法,但我想知道是否可以申请。
所以这可以正常工作
import pandas as pd
df = pd.DataFrame({0: [1,2,3],1:[2,3,4],2: [0,0]})
i = 0
for rows in df:
print ("Current row: {}".format(i))
df[2][i] = df[0][i] * df[1][i]
i += 1
print (df)
输出
Current row: 0
Current row: 1
Current row: 2
0 1 2
0 1 2 2
1 2 3 6
2 3 4 12
但是我希望做一些适用的事情,例如:
def func(df):
#something here to print
return df[0] * df[1]
df[2] = df.apply(func,axis=1)
非常感谢。
解决方法
您可以使用series.name
:
>>> def mul(row):
print('Current row:',row.name)
return row[0] * row[1]
>>> df[2] = df.apply(mul,axis=1);print(df)
Current row: 0
Current row: 1
Current row: 2
0 1 2
0 1 2 2
1 2 3 6
2 3 4 12
,
我想您可以这样编写函数:
def func(df):
print(f'Current row: {df.name}')
return df[0] * df[1]
用法如下:
>>> df[2] = df.apply(func,axis=1)
Current row: 0
Current row: 1
Current row: 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。