我有多个数据集具有相同的列名,如下例所示,我希望在多个数据集中重复的列使用python和pandas以列表格式排序。
df1 = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8),
'D': np.arange(8) * 2})
df2 = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8)})
df3 = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'D': np.arange(8) * 2})
从上面我们可以看到三个数据集df1,df2,df3重复列为'A','B',输出为['A','B'] 请解决这个问题。 在此先感谢
答案 0 :(得分:0)
Pandas列的类型为pandas.core.indexes.base.Index
,您可以使用其中的交集函数来查找重叠元素。以下是一个示例
import pandas as pd
import numpy as np
a = np.arange(1,4)
b = np.arange(5,8)
c = np.random.randint(0,10,size=3)
d = np.random.randint(0,10,size=3)
df_1 = pd.DataFrame({'a':a,'b':b,'c':c,'d':d})
out:
a b c d
0 1 5 5 1
1 2 6 7 5
2 3 7 6 9
a = np.arange(4,7)
b = np.arange(7,10)
e = np.random.randint(0,10,size=3)
f = np.random.randint(0,10,size=3)
df_2 = pd.DataFrame({'a':a,'b':b,'e':c,'f':d})
df_2
out:
a b e f
0 4 7 9 9
1 5 8 9 3
2 6 9 2 1
df_1.columns.intersection(df_2.columns)
out:
Index(['a', 'b'], dtype='object')
type(df_1.columns)
out:
pandas.core.indexes.base.Index
答案 1 :(得分:0)
熊猫可以get list of column names为你服务。例如,df1.columns
将返回['A','B','C','D']
。同样,您可以获取每个数据帧的列名列表。
答案 2 :(得分:0)
我认为对于所有列名称的交集,最简单的是&
:
a = df1.columns & df2.columns & df3.columns
print (a)
Index(['A', 'B'], dtype='object')
如果需要list
:
a = (df1.columns & df2.columns & df3.columns).tolist()
print (a)
['A', 'B']