【发布时间】:2021-07-14 17:48:57
【问题描述】:
我有一个包含如下各列的数据框:
import numpy as np
import pandas as pd
d = {'X': [1.1, 1.2, 1.3, 2.1, 2.2, 2.3],
'Group Index': [1, 1, 1, 2, 2, 2],
'Score': [1, 2, 3, 10, 20, 30]}
df = pd.DataFrame(data=d)
print(df)
X Group Index Score
1.1 1 1
1.2 1 2
1.3 1 3
2.1 2 10
2.2 2 20
2.3 2 30
我使用“apply”和“lambda”创建一个新列来填充具有相同“组索引”的每一行的范围(例如,max-min)
df.loc[:,'Score Range'] = df.apply (lambda row: np.ptp(df[(df['Group Index']==row['Group Index'])]['Score']), axis=1)
print(df)
X Group Index Score Score Range
1.1 1 1 2
1.2 1 2 2
1.3 1 3 2
2.1 2 10 20
2.2 2 20 20
2.3 2 30 20
“lambda”和“apply”可以工作,但是太慢了。还有其他更好的方法来加快生成上述新列(分数范围)吗?
【问题讨论】:
标签: python pandas dataframe numpy