我有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是否有一种简单的方法可以进行搜索和计数,或者我是否必须将其切换到列表中并开始迭代列表?
答案 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