Python Pandas Dataframe groupby:一次应用多个lambda函数
我按“名称”对以下数据帧进行分组,然后在“值”上应用几个lambda函数以生成其他列。 是否可以立即应用这些lambda函数以提高效率Python Pandas Dataframe groupby:一次应用多个lambda函数,python,pandas,Python,Pandas,我按“名称”对以下数据帧进行分组,然后在“值”上应用几个lambda函数以生成其他列。 是否可以立即应用这些lambda函数以提高效率 import pandas as pd df = pd.DataFrame({'name': ['A','A', 'B','B','B','B', 'C','C','C'], 'value': [1, 3, 1, 2, 3, 1, 2, 3, 3], }) df['Diff'] = df.groupby('name')
import pandas as pd
df = pd.DataFrame({'name': ['A','A', 'B','B','B','B', 'C','C','C'],
'value': [1, 3, 1, 2, 3, 1, 2, 3, 3], })
df['Diff'] = df.groupby('name')['value'].transform(lambda x: x - x.iloc[0])
df['Count'] = df.groupby('name')['value'].transform(lambda x: x.count())
df['Index'] = df.groupby('name')['value'].transform(lambda x: x.index - x.index[0] + 1)
print(df)
输出:
name value Diff Count Index
0 A 1 0 2 1
1 A 3 2 2 2
2 B 1 0 4 1
3 B 2 1 4 2
4 B 3 2 4 3
5 B 1 0 4 4
6 C 2 0 3 1
7 C 3 1 3 2
8 C 3 1 3 3
以下是一个功能的可能用途,但不确定是否有更好的性能:
def f(x):
a = x - x.iloc[0]
b = x.count()
c = x.index - x.index[0] + 1
return pd.DataFrame({'Diff':a, 'Count':b, 'Index':c})
df = df.join(df.groupby('name')['value'].apply(f))
print(df)
name value Diff Count Index
0 A 1 0 2 1
1 A 3 2 2 2
2 B 1 0 4 1
3 B 2 1 4 2
4 B 3 2 4 3
5 B 1 0 4 4
6 C 2 0 3 1
7 C 3 1 3 2
8 C 3 1 3 3