希望了解熊猫的人能够引导我走向正确的方向。我有一个字典,其中包含许多时间序列数据帧的值。每个月的数据框分别如下所示:
我正在尝试获得这样的输出:
我尝试使用以下代码进行串联:
header = next(iter(dict.values())).iloc[0]
for v in dict.values():
out=pd.concat([v[1:]],axis=0,ignore_index=True)
out.columns=header
print(out)
不幸的是,我的最终结果不是完整的串联。相反,我只是得到这样的东西:
我丢失了标题,而且我似乎只获取与结果连接的字典中的最后一个值。 pd.concat 是一个好的使用方法吗?或者我应该使用追加或合并?
非常感谢任何指导,谢谢。
我觉得你可能想多了。
pd.concat
是正确的工具,但原因之一是您不需要迭代您的字典。
#set up fake data
data = {'September': pd.DataFrame({'ReportingDate': ['9/30/2023', '9/30/2023', '9/30/2023'],
'Category': ['A', 'B', 'C'],
'Volume': [1, 2, 3]}),
'October': pd.DataFrame({'ReportingDate': ['10/31/2023', '10/31/2023', '10/31/2023'],
'Category': ['A', 'B', 'C'],
'Volume': [1, 2, 3]})
}
df = pd.concat(data.values(), ignore_index = True)
print(df)
这就给出了
ReportingDate Category Volume
0 9/30/2023 A 1
1 9/30/2023 B 2
2 9/30/2023 C 3
3 10/31/2023 A 1
4 10/31/2023 B 2
5 10/31/2023 C 3
如果你给
pd.concat
一个数据帧列表和 axis = 0
(我省略了它,因为它是默认值),它会将它们端到端连接,根据它们的标签对齐列。从技术上讲,data.values()
不是一个列表(它是一个 dict_values
对象),但它足够接近,可以在这种情况下表现得像一个列表。