gpt4 book ai didi

python - Pandas 合并同名列

转载 作者:行者123 更新时间:2023-12-04 03:42:03 24 4
gpt4 key购买 nike

我有以下数据框:

<表类="s-表"><头>时间戳参与者级别<日>金 参与者级别<日>金 <正文>111006000276420021150500021203700

我正在尝试更改 Dataframe,以便名称相同的列中的所有行都移动到彼此下方,同时保留名为 timestamp 的列:

<表类="s-表"><头>时间戳参与者级别<日>金 <正文>11100600021150500012764200221203700

需要说明的是,上面的例子只是一个小样本,实际的 Dataframe 有很多同名的列,还有更多的行。因此,解决方案需要考虑到这一点。

谢谢!

最佳答案

Idea 通过GroupBy.cumcount 对重复的列名进行了去重用于计数器,然后通过 DataFrame.stack reshape :

df = df.set_index('Timestamp')
s = df.columns.to_series()

df.columns = [df.columns, s.groupby(s).cumcount()]

df = df.stack().reset_index(level=1, drop=True).reset_index()

如果列名不重复并添加 . 和数字:

print (df)
Timestamp participant level gold participant.1 level.1 gold.1
0 1 1 100 6000 2 76 4200
1 2 1 150 5000 2 120 3700

df = df.set_index('Timestamp')

df.columns = pd.MultiIndex.from_frame(df.columns.str.split('.', expand=True)
.to_frame().fillna('0'))

df = df.stack().reset_index(level=1, drop=True).reset_index()
print (df)
0 Timestamp gold level participant
0 1 6000 100 1
1 1 4200 76 2
2 2 5000 150 1
3 2 3700 120 2

关于python - Pandas 合并同名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65860353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com