连接字典值中的数据框

问题描述 投票:0回答:1

希望了解熊猫的人能够引导我走向正确的方向。我有一个字典,其中包含许多时间序列数据帧的值。每个月的数据框分别如下所示:

我正在尝试获得这样的输出:

我尝试使用以下代码进行串联:

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 是一个好的使用方法吗?或者我应该使用追加或合并?

非常感谢任何指导,谢谢。

python pandas dataframe dictionary concatenation
1个回答
0
投票

我觉得你可能想多了。

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
对象),但它足够接近,可以在这种情况下表现得像一个列表。

© www.soinside.com 2019 - 2024. All rights reserved.