Python Pandas--聚合具有相同名称的多个列?

Python Pandas--聚合具有相同名称的多个列?,python,pandas,Python,Pandas,我有多个具有相同名称的列(即3个名为“box”的列),我需要有一个对值求和的列,以便连接数据帧。有多个这样的情况需要发生 我尝试了df1=df.groupby(level=0,axis=1).sum(),但是我得到了一个没有值的列。(即,在第一行,“框”:9,“框”:1,“框”:4应成为一列名为“框”,值为14,但它显示的是一列名为“框”,但没有值。)您可以使用df['column_name']]基于列名求和。求和(axis=1)并为希望得到结果的列设置该列 下面是一个简单的例子: >>df a

我有多个具有相同名称的列(即3个名为“box”的列),我需要有一个对值求和的列,以便连接数据帧。有多个这样的情况需要发生


我尝试了
df1=df.groupby(level=0,axis=1).sum()
,但是我得到了一个没有值的列。(即,在第一行,“框”:9,“框”:1,“框”:4应成为一列名为“框”,值为14,但它显示的是一列名为“框”,但没有值。)

您可以使用
df['column_name']]基于列名求和。求和(axis=1)
并为希望得到结果的列设置该列

下面是一个简单的例子:

>>df
a b c b e
01 5 dd 16
1 2 9 ee 1 10
2 3 1 ff 1 2
>>>df['f']=df['b'].和(轴=1)
>>>df
a b c b e f
01 5 dd 16 6
1 2 9 ee 1 10 10
2 3 1 ff 1 2
请注意,它不是对行中的每个值求和,而是对名为“b”的列中的值求和

这是因为当您按名称调用一个重复的列时,
pandas
会识别该事实。例如:

df['a'] 0 1 1 2 2 3 名称:a,数据类型:int64 >>>df['b'] b b 0 5 1 1 9 1 2 1 1 >>>df.columns.get_loc('a')) 0 >>>df.columns.get_loc('b') 数组([False,True,False,True,False,False])

我建议重新命名重复的列名,避免将来出现重复名称带来的不确定性。对于如何执行此操作以及如何在从其他来源导入时避免此操作,有很多建议。

您可以使用
df['column\u name'].sum(axis=1)
基于列名求和,并为您想要结果的列设置此值

下面是一个简单的例子:

>>df
a b c b e
01 5 dd 16
1 2 9 ee 1 10
2 3 1 ff 1 2
>>>df['f']=df['b'].和(轴=1)
>>>df
a b c b e f
01 5 dd 16 6
1 2 9 ee 1 10 10
2 3 1 ff 1 2
请注意,它不是对行中的每个值求和,而是对名为“b”的列中的值求和

这是因为当您按名称调用一个重复的列时,
pandas
会识别该事实。例如:

df['a'] 0 1 1 2 2 3 名称:a,数据类型:int64 >>>df['b'] b b 0 5 1 1 9 1 2 1 1 >>>df.columns.get_loc('a')) 0 >>>df.columns.get_loc('b') 数组([False,True,False,True,False,False])

我建议重新命名重复的列名,避免将来出现重复名称带来的不确定性。对于如何做到这一点,以及如何在从其他来源导入时避免这一点,有很多建议。

您是否考虑过重命名重复的列名?在此过程中,列名将被重命名并成为重复的列名。基本上,我有30个可能的列名,分为五个部分中的一个。你能发布一些你看到的工作代码示例吗?我刚刚尝试了你的方法,它似乎有效,所以我想我没有清楚地看到你是从什么开始的,还是想以什么结束的。这真的很不寻常。由于某种原因,很难创建重复的索引…您是否考虑过重命名重复的列名?在重命名过程中,列名将被重命名并成为重复的列名。基本上,我有30个可能的列名,分为五个部分中的一个。你能发布一些你看到的工作代码示例吗?我刚刚尝试了你的方法,它似乎有效,所以我想我没有清楚地看到你是从什么开始的,还是想以什么结束的。这真的很不寻常。由于某种原因,很难创建重复的索引。。。