我有一个关于公司级别的长表,上面有第一年和最后一年的活动以及他们的邮政编码。
pd.DataFrame({'Firm':['A','B','C'],
'FirstYear':[2020, 2019, 2018],
'LastYear':[2021, 2022, 2019],
'Zipcode':['00000','00001','00003']})
Firm FirstYear LastYear Zipcode
A 2020 2021 00000
B 2019 2022 00001
C 2018 2019 00003
我想得到包含每个活跃年份的邮政编码的面板数据,所以理想情况下,我可能需要一个宽表,根据第一年和去年、以及第一年和去年之间的每一年来估算邮政编码的值。
它应该如下所示:
2020 2021 2019 2022 2018
A 00000 00000
B 00001 00001 00001 00001
C 00003 00003
我有一些代码可以为每行创建一个长表,但我有数百万行,这需要很长时间。从性能和内存使用方面来说,转换长表的最佳方法是什么?我必须将每年的邮政编码值输入Pandas。
先谢了。
回应答案的更新:假设有一家公司的第一年和最后一年与其他公司没有重叠。
df=pd.DataFrame({'Firm':['A','B','C'],
'FirstYear':[2020, 2019, 1997],
'LastYear':[2021, 2022, 2008],
'Zipcode':['00000','00001','00003']})
代码的输出如下所示:
Firm 2020 2021 2019 2022 1997 2008
A 00000 00000
B 00001 00001 00001 00001
C 00003 00003
1条答案
按热度按时间mnemlml81#
以下是
pd.melt()
的解决方案原始答复:
输出: