如何合并同一数据框的多列
Posted
技术标签:
【中文标题】如何合并同一数据框的多列【英文标题】:How to merge multiple column of same data frame 【发布时间】:2019-02-25 13:02:18 【问题描述】:如何将多个列值合并到同一数据框的一列中,并获得具有唯一值的新列。
Column1 Column2 Column3 Column4 Column5
0 a 1 2 3 4
1 a 3 4 5
2 b 6 7 8
3 c 7 7
输出:
Column A
a
a
b
c
1
3
6
7
2
4
5
8
【问题讨论】:
Column1 Column2 Column3 Column4 Column5 0 a 1 2 3 4 1 a 3 4 5 2 b 6 7 8 3 c 7 7 Merge multiple column values into one column in python pandas的可能重复 【参考方案1】:使用unstack
或melt
进行整形,删除dropna
的缺失值和drop_duplicates
的重复值:
df1 = df.unstack().dropna().drop_duplicates().reset_index(drop=True).to_frame('A')
df1 = df.melt(value_name='A')[['A']].dropna().drop_duplicates().reset_index(drop=True)
print (df1)
A
0 a
1 b
2 c
3 1
4 3
5 6
6 7
7 2
8 4
9 5
10 8
【讨论】:
@Ayush - 欢迎您!如果我的回答有帮助,请不要忘记 accept 它 - 单击答案旁边的复选标记,将其从灰色切换为已填充。谢谢。【参考方案2】:如果您可以使用 numpy,这是另一种方法。这将处理原始数据帧中的 nans 或空字符串,并且比 unstack 快一点 或融化。
import pandas as pd
import numpy as np
df = pd.DataFrame('Column1': ['a', 'a', 'b', 'c'],
'Column2': [1, 3, 6, 7],
'Column3': [2, 4, 7, 7],
'Column4': [3, 5, 8, np.nan],
'Column5': [4, '', '', np.nan])
u = pd.unique(df.values.flatten(order='F'))
u = u[np.where(~np.isin(u, ['']) & ~pd.isnull(u))[0]]
df1 = pd.DataFrame(u, columns=['A'])
print(df1)
A
0 a
1 b
2 c
3 1
4 3
5 6
6 7
7 2
8 4
9 5
10 8
【讨论】:
以上是关于如何合并同一数据框的多列的主要内容,如果未能解决你的问题,请参考以下文章
R 中merge()函数匹配数据或根据一列或多列来合并两个数据框