我设置了一个dict'd',这是一个数据帧列表,例如:
d["DataFrame1"]
将返回该数据框及其所有列:
ID Name
0 123 John
1 548 Eric
2 184 Sam
3 175 Andy
每个数据框都有一个名为“Names”的列。我想从dict中的每个数据帧中提取此列,并创建一个由这些列组成的新数据帧。
df_All_Names = pd.DataFrame()
for df in d:
df_All_Names[df] = df['Names']
返回错误:
TypeError:字符串索引必须是整数
不确定我在哪里出错。
答案 0 :(得分:1)
例如,你有df如下
df=pd.DataFrame({'Name':['X', 'Y']})
df1=pd.DataFrame({'Name':['X1', 'Y1']})
我们创建了一个dict
d=dict()
d['df']=df
d['df1']=df1
然后预设空数据框:
yourdf=pd.DataFrame()
将items
与for循环
for key,val in d.items():
yourdf[key]=val['Name']
产量:
yourdf
Out[98]:
df df1
0 X X1
1 Y Y1
答案 1 :(得分:0)
您可以使用reduce
并连接数据框字典中名为['Name']
的所有列
样本数据
from functools import reduce
d = {'df1':pd.DataFrame({'ID':[0,1,2],'Name':['John','Sam','Andy']}),'df2':pd.DataFrame({'ID':[3,4,5],'Name':['Jen','Cara','Jess']})}
您可以使用axis=1
reduce(lambda x,y:pd.concat([x.Name,y.Name],axis=1),d.values())
Name Name
0 John Jen
1 Sam Cara
2 Andy Jess
或使用axis=0
reduce(lambda x,y:pd.concat([x.Name,y.Name],axis=0),d.values())
0 John
1 Sam
2 Andy
0 Jen
1 Cara
2 Jess