Python 合并具有相同名称但不排序列的dataframe列
我有一个列名称为的数据框:Python 合并具有相同名称但不排序列的dataframe列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个列名称为的数据框: '01 2017' '02 2017' ...... '12 2017' '01 2018' '01 2018' .... 因此,您可以看到两列中重复了01 2018和01 2018。我想在不重新排列列的情况下对列进行求和 我目前有以下代码: df.groupby(lambda x:x, axis=1).sum() 但是,输出是: '01 2017' '01 2018' ... '12 2017' '12 2018' 这会按前两位数字对其进行排序,并使排列混乱。
'01 2017' '02 2017' ...... '12 2017' '01 2018' '01 2018' ....
因此,您可以看到两列中重复了01 2018和01 2018。我想在不重新排列列的情况下对列进行求和
我目前有以下代码:
df.groupby(lambda x:x, axis=1).sum()
但是,输出是:
'01 2017' '01 2018' ... '12 2017' '12 2018'
这会按前两位数字对其进行排序,并使排列混乱。我认为您需要使用@piRSquared setup modified重新编制索引:
使用df.columns.unique true按当前顺序列出唯一的列名,然后使用axis=1的reindex将列排序在groupby之后,并使用sum
df = pd.DataFrame(
np.random.randint(10, size=(6, 5)),
columns='1 2017|2 2017|1 2018|2 2018|2 2018'.split('|')
)
df.groupby(df.columns, axis=1).sum().reindex(df.columns.unique(), axis=1)
输出:
1 2017 2 2017 1 2018 2 2018
0 9 2 4 15
1 5 0 0 10
2 1 8 5 10
3 1 1 9 8
4 9 0 0 0
5 6 1 4 5
通过使用Pir的数据,稍微改变它 数据输入 解决方案
请花一点时间看一下网站上的建议和说明,以及关于回答问题的提示。我更喜欢你的解决方案:+他们叫我近视的斯科特。@ScottBoston哈,这让我大笑。我也有罪。我错过了重复的专栏和所有的-:删除我的答案。抓取你的人的答案设置。
np.random.seed([3, 1415])
df = pd.DataFrame(
np.random.randint(10, size=(5, 4)),
columns='1 2017|2 2017|1 2018|1 2018'.split('|')
)
df
Out[346]:
1 2017 2 2017 1 2018 1 2018
0 0 2 7 3
1 8 7 0 6
2 8 6 0 2
3 0 4 9 7
4 3 2 4 3
df.sum(level=0,axis=1) # using `sum`
Out[347]:
1 2017 2 2017 1 2018
0 0 2 10
1 8 7 6
2 8 6 2
3 0 4 16
4 3 2 7