Pandas 熊猫中数据帧的循环问题
我有一个dict“d”设置,它是一个数据帧列表,例如: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
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”列,并创建一个独立于数据帧字典的新数据帧。也许吧?你想要的结果是什么?