【问题标题】:iterating over a dictionary of empty pandas dataframes to append them with data from existing dataframe based on list of column names遍历空熊猫数据框的字典,以根据列名列表将现有数据框中的数据附加到它们
【发布时间】:2017-03-21 02:25:57
【问题描述】:

我是一名生物学家,对 Python(我使用 v3.5)和 pandas 非常陌生。我有一个 pandas 数据帧(df),我需要从中创建几个数据帧(df1...dfn),这些数据帧可以放在字典(dictA)中,该字典当前具有正确数量(n)的空数据帧。我还有一个字典(dictB),其中包含从 df 提取的 n(单个)列名列表。 2 个字典中的键匹配。我正在尝试根据 dictB 中列表中的列名将 dictA 中的空 dfs 与 df 的一部分附加。

import pandas as pd
listA=['A', 'B', 'C',...]
dictA={i:pd.DataFrame() for i in listA}

假设我有这样的事情:

dictA={'A': df1, 'B': df2}
dictB={'A': ['A1', A2', 'A3'],
       'B': ['B1', B2']}
df=pd.DataFrame({'A1': [0,2,4,5],
                 'A2': [2,5,6,7],
                 'A3': [5,6,7,8],
                 'B1': [2,5,6,7],
                 'B2': [1,3,5,6]})
listA=['A', 'B']

我想要得到的是让 df1 和 df2 像这样附加 df 的部分,因此 df1 的输出是这样的:

  A1 A2 A3
0 0  2  5
1 2  4  6
2 4  6  7
3 5  7  8

df2 将包含 B1 和 B2 列。

我尝试了以下循环和一些更改,但它没有产生填充的 dfs:

for key, values in dictA.items():
    values.append(df[dictB[key]])

感谢和抱歉,如果这已经在其他地方解决但我找不到它。

【问题讨论】:

    标签: pandas for-loop dictionary dataframe


    【解决方案1】:

    你可以像这样创建你想要的数据框:

    df = #Your original dataframe containing all the columns
    df_A = df.iloc[:][[col for col in df if 'A' in col]]
    df_B = df.iloc[:][[col for col in df if 'B' in col]]
    

    【讨论】:

    • 谢谢。这将适用于可管理数量的 dfs。我以 2 个 dfs 为例。我有很多 dfs 我想保存在一个地方,比如字典和面板中,所以这需要循环来填充我在 dictA 中的 n 个空 dfs。或循环直接制作填充的dfs字典。
    • 然后是的,你可以循环
    猜你喜欢
    • 2020-09-23
    • 2021-11-09
    • 2022-11-25
    • 2020-07-22
    • 2014-01-03
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多