在panadas中为所有列合并多行

2024-06-09 23:20:41 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有一个1000行100列的数据框。第一列是名称,其余为值或空。许多行具有相同的名称。我如何添加它们,并将每个名称与值的总和相加一次

例如,第一行的名称Alex的值为20、30、40,另外两行的名称Alex的值分别为10、10、20。因此,我的新数据帧应该只包含一行Alex,其值为40、50、80

编辑:首先感谢大家的反馈。对不起,我不清楚。假设我有下面的矩阵

Names        Last name    price1     price2    price3   (no named column)  
-------------------------------------------------------------------------
Alex         Robinson     10         20         30      (a string)
Bill         Towns        10         40         50      (empty)
Alex         Robinson     30         10         20      (empty)
George       Leopold      10         10         10      (empty)
Alex         Robinson     20         20         20      (empty)

Names        Last name    price1     price2    price3   (no named column)  
(no named row)
---------------------------------------------------------------------------
Alex         Robinson     60         50         70      (a string)
Bill         Towns        10         40         50      (empty)
George       Leopold      10         10         10      (empty)

但不是3列,而是想象我有100列。因此,我不能明确地以他们的名字为例

EDIT2:我忘了告诉你,有些行还包含字符串。不幸的是,这个命令有一个错误

df8 = data.groupby('Name').sum()

我已经用这个命令对数据帧进行了排序

data2 = data.sort_values('Name',ascending=True).reset_index(drop=True)

Tags: 数据noname名称stringnamescolumnnamed
2条回答

下面是将您的分数相加的代码:

import pandas as pd

data = [['alan',10],['tom',23],['nick',22],['alan',11]]
df = pd.DataFrame(data,columns=['name','score'])
df = df.groupby(['name'], as_index=False)['score'].sum()

print(df)

结果是: 之前:

   name  score
0  alan     10
1   tom     23
2  nick     22
3  alan     11

及之后:

   name  score
0  alan     21
1  nick     22
2   tom     23

你可以用df.groupby来做

df = df.groupby('Names').sum().reset_index()

输出

    Names  price1  price2  price3
0    Alex      60      50      70
1    Bill      10      40      50
2  George      10      10      10

相关问题 更多 >