gpt4 book ai didi

python - 展平和展开 csv 文件?

转载 作者:行者123 更新时间:2023-11-28 21:53:37 24 4
gpt4 key购买 nike

目标:

我想转换以下架构:

group, id, name
A, 12345, "eeny"
A, 23456, "meeny"
A, 34567, "miney mo"
B, 99999, "foo"
B, 88888, "bar"
B, 77777, "foobar"

进入:

group, id1, name1, id2, name2, id3, name3
A, 12345, "eeny", 23456, "meeny", 34567, "miney mo"
B, 99999, "foo", 88888, "bar", 77777, "foobar"

在 Python 的上下文中,我假设最好使用 Pandas groupby() 和/或 unstack() 来完成,但我遇到的大多数文档都与数值计算有关,而不是字符串。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

这是一种方法。添加代表每个组内计数的列。

df['group_num'] = df.groupby('group')['id'].transform(lambda x: range(1, len(x)+1))

然后,使用pivot 函数 reshape 数据。

In [37]: df.pivot(index='group', columns='group_num')
Out[37]:
id name
group_num 1 2 3 1 2 3
group
A 12345 23456 34567 eeny meeny miney mo
B 99999 88888 77777 foo bar foobar

这会将列设置为 MultiIndex。你可以像这样在你想要的输出中显示出来:

In [41]: df = df.pivot(index='group', columns='group_num')    

In [42]: df.columns = [''.join([lvl1, str(lvl2)]) for lvl1, lvl2 in df.columns]

In [43]: df
Out[43]:
id1 id2 id3 name1 name2 name3
group
A 12345 23456 34567 eeny meeny miney mo
B 99999 88888 77777 foo bar foobar

关于python - 展平和展开 csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25856253/

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