pandas 如何在python中使用panda将两列合并为一列,并且没有重复值?

kr98yfug  于 2022-11-05  发布在  Python
关注(0)|答案(2)|浏览(150)

如何在panda for python中执行以下从 Dataframe A到 Dataframe B的 Dataframe 操作?我已经尝试了pivot和groupby,但是我一直得到错误。非常感谢任何支持。
Dataframe A
| 色谱柱A|色谱柱B|
| - -|- -|
| 100个|一个|
| 100个|2个|
| 二百个|三个|
| 二百个|四个|
Dataframe B
| A列和B列|
| - -|
| 一个|
| 2个|
| 100个|
| 三个|
| 四个|
| 二百个|

s4n0splo

s4n0splo1#

使用groupby的一个选项:

out = (df
   .groupby('Col A', group_keys=False, sort=False)
   .apply(lambda d: d.iloc[:, ::-1].unstack().drop_duplicates())
   .reset_index(drop=True).to_frame(name='Col A&B')
)

另一个用concat

out = (pd
   .concat([df['Col B'], df['Col A'].drop_duplicates(keep='last')])
   .sort_index().reset_index(drop=True).to_frame(name='Col A&B')
)

输出:

Col A&B
0        1
1        2
2      100
3        3
4        4
5      200

如果顺序无关紧要,您可以stack

out = df.stack().drop_duplicates().reset_index(drop=True).to_frame(name='Col A&B')

输出:

Col A&B
0      100
1        1
2        2
3      200
4        3
5        4
gpfsuwkq

gpfsuwkq2#

另一种可能的解决方案:

out = pd.DataFrame({'Col A&B': np.unique(df.values)})
out

输出量:

Col A&B
0        1
1        2
2        3
3        4
4      100
5      200

相关问题