Python 将熊猫中的两行相加,形成一个长行

Python 将熊猫中的两行相加,形成一个长行,python,pandas,dataframe,Python,Pandas,Dataframe,希望是一个简短的问题,但我有两个数据帧,根据我要查找的名称,我从每个数据帧中提取了一行: mmb_df[mmb_df['name'] == mmb_name] jps_df[jps_df['name'] == jps_name] 这给了我两行,每行大约60列,我只想把它们组合起来,这样我就有一行120列。有些列确实有相同的名称,但我不确定这是否有任何区别 如果我有这样两行: name tag x y 001_Dc F 243 567 name ta

希望是一个简短的问题,但我有两个数据帧,根据我要查找的名称,我从每个数据帧中提取了一行:

mmb_df[mmb_df['name'] == mmb_name]

jps_df[jps_df['name'] == jps_name]
这给了我两行,每行大约60列,我只想把它们组合起来,这样我就有一行120列。有些列确实有相同的名称,但我不确定这是否有任何区别

如果我有这样两行:

name     tag   x    y 
001_Dc   F     243  567

name     tag   position1    position2
jps_043  EW    908          219
我只需要这些:

name     tag   x    y     name      tag   position1   position2
001_Dc   F     243  567   jps_043   EW    908         219

我相信这很容易做到,但我运气不好。

我认为您首先需要相同的索引,然后使用:

在这里使用不是很好的解决方案,因为不能避免重复的列名

pd.concat([a,b], axis=1)
如果可能,某些条件返回更多行是可能的,请仅选择第一个:

a = a.iloc[[0]]
b = b.iloc[[0]]
b.index = a.index
c = a.join(b, lsuffix='first')
或者使用double将第一个索引设置为
0

a = a.iloc[[0]].set_index([[0]])
b = b.iloc[[0]].set_index([[0]])
c = a.join(b, lsuffix='first')
仅适用于第一行的解决方案-按行获取第一个
True
并按
loc
选择:

a = mmb_df.loc[[(mmb_df['name'] == mmb_name).idxmax()]].set_index([[0]])
b = jps_df.loc[[(jps_df['name'] == jps_name).idxmax()]].set_index([[0]])

c = a.join(b, lsuffix='first')

我认为您首先需要相同的索引,然后使用:

在这里使用不是很好的解决方案,因为不能避免重复的列名

pd.concat([a,b], axis=1)
如果可能,某些条件返回更多行是可能的,请仅选择第一个:

a = a.iloc[[0]]
b = b.iloc[[0]]
b.index = a.index
c = a.join(b, lsuffix='first')
或者使用double将第一个索引设置为
0

a = a.iloc[[0]].set_index([[0]])
b = b.iloc[[0]].set_index([[0]])
c = a.join(b, lsuffix='first')
仅适用于第一行的解决方案-按行获取第一个
True
并按
loc
选择:

a = mmb_df.loc[[(mmb_df['name'] == mmb_name).idxmax()]].set_index([[0]])
b = jps_df.loc[[(jps_df['name'] == jps_name).idxmax()]].set_index([[0]])

c = a.join(b, lsuffix='first')
熊猫也可以:

df1.index = df2.index
pd.merge(df1, df2, how='inner',  left_index=True, right_index=True, sort=True, suffixes=('_x', '_y'))
输出:

    name_x  tag_x   x   y   name_y  tag_y   position1   position2
0   001_Dc  F   243 567 jps_043 EW  908 219
熊猫也可以:

df1.index = df2.index
pd.merge(df1, df2, how='inner',  left_index=True, right_index=True, sort=True, suffixes=('_x', '_y'))
输出:

    name_x  tag_x   x   y   name_y  tag_y   position1   position2
0   001_Dc  F   243 567 jps_043 EW  908 219

谢谢,第一个解决方案有效,必须为同名列的联接函数添加后缀参数。谢谢,第一个解决方案有效,必须为同名列的联接函数添加后缀参数。