Python Pandas匹配数据帧

时间:2017-05-25 10:56:38

标签: python pandas dataframe

我有3个不同的数据帧,每个数据帧都有不同的列,但所有3个数据帧中都存在一个具有相同标题的列。 在本专栏中,我有一些名称,我想计算一个名称在不同数据帧中重复的次数。

例如,那些是3个数据帧:

DF1:

 ArrayList<Reservation> reservations
Change it to ArrayAdapter<Reservation>

DF2:

col1   col2   names   col3
 a       a     bbb      a
 a       a     ccc      a
 a       a     bbb      a

DF3:

col4   col5   names   col6
 a       a     bbb      a
 a       a     zzz      a
 a       a     qqq      a

所以输出数据帧将是:

col7   col8   names   col9
 a       a     zzz      a
 a       a     zzz      a
 a       a     rrr      a

因此输出数据框检查任何其他df中存在哪个名称,最后一列计算它出现的次数。

pandas是否有一种简单的方法可以进行搜索和计数,或者我是否必须将其切换到列表中并开始迭代列表?

1 个答案:

答案 0 :(得分:2)

您可以使用concat + get_dummies + groupby + reset_index + max + T + sum + {{ 3}}:

dfs = [df1, df2, df3]
names = ['df1', 'df2', 'df3']
df = pd.concat([df['names'] for df in dfs], keys=names)
df = pd.get_dummies(df.reset_index(level=1, drop=True)).groupby(level=0).max().T
df['total'] = df.sum(axis=1)
df[names] = df[names].replace({0:'X', 1:'V'})
print (df)
    df1 df2 df3  total
bbb   V   V   X      2
ccc   V   X   X      1
qqq   X   V   X      1
rrr   X   X   V      1
zzz   X   V   V      2