Pandas 熊猫中数据帧的循环问题

Pandas 熊猫中数据帧的循环问题,pandas,dictionary,dataframe,Pandas,Dictionary,Dataframe,我有一个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

我有一个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:字符串索引必须是整数


不确定我哪里出了问题。

例如,您有如下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()
使用带有for循环的

for key,val in d.items():
    yourdf[key]=val['Name']
产量:

yourdf
Out[98]: 
  df df1
0  X  X1
1  Y  Y1

您可以使用
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
或者使用
轴=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

我不确定我是否完全明白@好奇的学生,既然你已经有了口述,你只需要最后一部分的兴趣,它似乎在起作用——我要花一些时间来弄清楚它是如何工作的!Thanks@CuriousStudent您的代码尝试使用
DataFrame
作为列名,但实际上您希望使用字典中的键,即,这就是您正在做的
df_All_name[d[“DataFrame1”]=d[“DataFrame1”]['Names']
但您希望这样做:
df_All_name[“DataFrame1”]=d[“DataFrame1”]['Names']
我认为OP希望从字典中的每个数据帧中获取“Name”列,并创建一个独立于数据帧字典的新数据帧。也许吧?你想要的结果是什么?