我有两个Dataframe:一个包含“Name”,“Year”和“Type”列,另一个包含不同的参数。有4种不同的类型,每种类型都有自己的特定参数。现在我需要将它们合并在一起。
我的方法是使用if函数找出“类型”。例如,在df3的第二行中,我有类型'a'。类型“a”的参数位于df4的第3行。我尝试使用以下代码连接它们:
df3.ix[[2]]
s1 = df3.ix[[2]]
s2 = df4.ix[[3]]
result = pd.concat([s1, s2], axis=1)
我现在的问题是,参数是在一个单独的行中,而不是添加到第2行。是否有可能将它们合并在一行中?谢谢你的回答!
答案 0 :(得分:1)
如果df3
有Type
列且df4
有type
列,那么这两个数据框可以与
pd.merge(df3, df4, left_on='Type', right_on='type')
默认为an inner join。
In [13]: df3
Out[13]:
Name Year Type
1 A 2012 boat
2 B 2013 car
3 C 2011 truck
4 D 2013 boat
In [14]: df4
Out[14]:
type Parameter1 Parameter2 Parameter3
0 boat 2 8 7
1 car 1 9 3
2 truck 5 4 2
In [15]: pd.merge(df3, df4, left_on='Type', right_on='type')
Out[15]:
Name Year Type type Parameter1 Parameter2 Parameter3
0 A 2012 boat boat 2 8 7
1 D 2013 boat boat 2 8 7
2 B 2013 car car 1 9 3
3 C 2011 truck truck 5 4 2
请注意,如果列名完全匹配,则
pd.merge(df3, df4)
默认情况下,会合并共同共享的列名。