我是一名生物学家,对Python(我使用的是v3.5)和pandas非常陌生。我有一个pandas数据帧(df),我需要从中生成几个可以放在字典(dictA)中的数据帧(df1 ... dfn),该字典当前具有正确的空数据帧数(n)。我还有一个从df中提取的n(个别)列名列表(dictB)。 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]])
非常感谢和抱歉,如果这已经在其他地方得到解决,但我找不到它。
答案 0 :(得分:0)
您可以改为创建您想要的数据帧:
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]]