python - 如何在Python DataFrame上的同一列中连接相同的行名称

标签 python dataframe data-science

我有一个像这样的简单数据框:

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/

相关文章:

python - 要处理的推文列表

machine-learning - 仅根据博客 Prop 和内容预测 3 个相似博客的最佳算法

python - 打开时在 pycharm 上自动运行 python 脚本

python - 如何在数据框中创建加权特征?

python - Airflow:创建一次性动态 SubDag

python - 如何在 Python 中无循环地有条件地设置 DataFrame 列值

python - 将 csv 文件的内容存储到数据框中 [Python Pandas]

pandas - 标签编码时保持顺序

python - 如何计算sklearn中每个交叉验证模型的特征重要性

python - 如何将 `numpy.datetime64` 列表转换为 `matplotlib.dates` ?