gpt4 book ai didi

python - 按列对DataFrame进行分组,对成员进行操作,并将结果输出到新的DataFrame中

转载 作者:行者123 更新时间:2023-12-01 00:22:22 25 4
gpt4 key购买 nike

我有一些DataFrame:

df = pd.DataFrame({'type':['Apple', 'Apple', 'Apple'],
'subtype':['Fuji', 'Cortland', 'Ambrosia'],
'score':[1,5,10],
'distance':[25,50,75]})

我想按类型对此DataFrame进行分组,计算所有成员的距离比率(例如25/50、25/75、50/75),并且在新的 DataFrame 中返回此操作的输出,例如:

enter image description here

最佳答案

我相信您首先需要按type进行交叉连接,然后按Series.ne删除具有相同subtypes值的行(!=) 与 boolean indexing最后使用 DataFrame.assign 创建比率列并除以 Series.div :

df = df.merge(df, on='type')
df = (df[df['subtype_x'].ne(df['subtype_y'])]
.assign(ratio=df['distance_x'].div(df['distance_y'])))
print (df)

type subtype_x score_x distance_x subtype_y score_y distance_y \
1 Apple Fuji 1 25 Cortland 5 50
2 Apple Fuji 1 25 Ambrosia 10 75
3 Apple Cortland 5 50 Fuji 1 25
5 Apple Cortland 5 50 Ambrosia 10 75
6 Apple Ambrosia 10 75 Fuji 1 25
7 Apple Ambrosia 10 75 Cortland 5 50

ratio
1 0.500000
2 0.333333
3 2.000000
5 0.666667
6 3.000000
7 1.500000

此外,如果需要删除距离列,您可以使用 DataFrame.pop 分配新列使用和删除距离列:

df = df.merge(df, on='type', suffixes=('1','2'))
df = df[df['subtype1'].ne(df['subtype2'])].copy()
df['ratio'] = df.pop('distance1').div(df.pop('distance2'))
print (df)
type subtype1 score1 subtype2 score2 ratio
1 Apple Fuji 1 Cortland 5 0.500000
2 Apple Fuji 1 Ambrosia 10 0.333333
3 Apple Cortland 5 Fuji 1 2.000000
5 Apple Cortland 5 Ambrosia 10 0.666667
6 Apple Ambrosia 10 Fuji 1 3.000000
7 Apple Ambrosia 10 Cortland 5 1.500000

关于python - 按列对DataFrame进行分组,对成员进行操作,并将结果输出到新的DataFrame中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58870918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com