【问题标题】:Pandas: iteratively concatenate columns stored in a dictionary of dataframesPandas:迭代连接存储在数据框字典中的列
【发布时间】:2017-04-01 04:15:36
【问题描述】:

假设我有一个包含 pandas 数据帧的字典,其中键是 0, 1, 2, ..., 999,值是这样的数据帧 (test_df):

          A         B         C
0  1.438161 -0.210454 -1.983704
1 -0.283780 -0.371773  0.017580
2  0.552564 -0.610548  0.257276
3  1.931332  0.649179 -1.349062
4  1.656010 -1.373263  1.333079
5  0.944862 -0.657849  1.526811

假设索引对您没有任何意义,并且您想创建一个新的数据框,其中列 AB 被连接:

mydf=pd.concat([test_df[0]['A'],test_df[0]['B']], axis=1, keys=['A','B'])

现在,我可以在 for 循环中使用这一行吗?该循环会遍历我的数据帧字典中的所有键?

如果不是,那么另一种方法是什么?结果将是一个包含两列的数据框,AB,以及6x1000 行。因此,索引列将从0 变为5999

【问题讨论】:

    标签: python pandas dictionary for-loop dataframe


    【解决方案1】:

    如果df_dic 是你的字典,你可以这样做:

    pd.concat([df[['A', 'B']] for df in df_dic.values()]).reset_index(drop=True)
    

    如果df_dic 包含两个键值对,结果如下所示:

    【讨论】:

    • 请放心:我认为我不会失去 A-to-B 配对,对吗?
    • 当您执行df[['A', 'B']] 时,它会从您的数据框中选择列AB,因此列表推导会创建一个数据框列表,其中AB 从每个数据帧的顺序与原始数据帧中的顺序相同。所以是的,它不应该。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 2021-01-24
    • 1970-01-01
    • 2019-01-14
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多