我有一个像这样的简单数据框:
df = pd.DataFrame({'class':['a','b','c','d','e'],
'name':['Adi','leon','adi','leo','andy'],
'age':['9','8','9','9','8'],
'score':['40','90','35','95','85']})
那么结果是这样的
class name age score
a Adi 9 40
b leon 8 90
a adi 9 35
d leo 9 95
e andy 8 85
如何将名为“Adi”的行与“adi”合并在同一列中,而他只有一个人,并且“Adi”的分数是 75,而不是 40 和 35
最佳答案
您可以使用 pandas.DataFrame.<b>groupby</b>
和 pandas.DataFrame.<b>aggregate</b>
第一次制作 name
后列小写:
import pandas as pd
df = pd.DataFrame({
'class': ['a', 'b', 'c', 'd', 'e'],
'name': ['Adi', 'leon', 'adi', 'leo', 'andy'],
'age': ['9', '8', '9', '9', '8'],
'score': ['40', '90', '35', '95', '85']
})
df['name'] = df['name'].str.lower()
df['score'] = df['score'].astype(int)
aggregate_funcs = {
'class': lambda s: ', '.join(set(s)),
'age': lambda s: ', '.join(set(s)),
'score': sum
}
df = df.groupby(df['name']).aggregate(aggregate_funcs)
print(df)
输出:
class age score
name
adi c, a 9 75
andy e 8 85
leo d 9 95
leon b 8 90
关于python - 如何在Python DataFrame上的同一列中连接相同的行名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70633347/