gpt4 book ai didi

python - 如何用两组变量拆散 Pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:50 24 4
gpt4 key购买 nike

我有一张看起来像这样的 table 。从 CSV 文件中读取,因此没有级别、没有花哨的索引等。

ID  date1      amount1    date2        amount2
x 15/1/2015 100 15/1/2016 80

我的实际文件是最新的 5 和数量 5。我如何将其转换为:

ID  date       amount
x 15/1/2015 100
x 15/1/2016 80

如果我只有一个变量,我会使用 pandas.melt(),但如果有两个变量,我真的不知道如何快速完成。

我可以手动导出到内存中的 sqlite3 数据库,然后进行合并。在 pandas 中做联合更烦人,因为与 SQL 不同,它要求所有字段名称都相同,所以在 pandas 中我必须创建一个临时数据框并重命名所有字段:date1 和 amount1 的数据框,重命名字段设置为日期和金额,然后对所有其他事件执行相同的操作,然后我才能执行 pandas.concat。

有什么建议吗?谢谢!

最佳答案

这是一种方法:

>>> pandas.concat(
... [pandas.melt(x, id_vars='ID', value_vars=x.columns[1::2].tolist(), value_name='date'),
... pandas.melt(x, value_vars=x.columns[2::2].tolist(), value_name='amount')
... ],
... axis=1
... ).drop('variable', axis=1)
ID date amount
0 x 15/1/2015 100
1 x 15/1/2016 80

想法是进行两次熔化,每组列一次熔化,然后将它们连接起来。这假设这两种列是交替排列的,以便 columns[1::2]columns[2::2] 正确选择它们。如果没有,您必须修改它的那部分以选择您想要的列。

您也可以使用鲜为人知的 lreshape 来实现:

>>> pandas.lreshape(x, {'date': x.columns[1::2], 'amount': x.columns[2::2]})
ID date amount
0 x 15/1/2015 100
1 x 15/1/2016 80

但是,lreshape 并没有真正的文档记录,也不清楚是否应该使用它。

关于python - 如何用两组变量拆散 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33483885/

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