首页 > 解决方案 > 如何计算字符串出现在多个数据帧的列中的次数

问题描述

我有一些看起来像这样的数据框,它们遵循相同的格式。

这是df1:

    country ticker 
0   US      MSFT
1   US      AAPL
2   GERMANY NSU.DE
3   SG      D05.SI
4   AUS     WOW.AX

这是df2:

    country ticker 
0   HK      0700.HK
1   HK      1337.HK
2   SWISS   NESN.SW
3   SG      OV8.SI

数据框保存到具有多张工作表的 csv 文件中。我可以轻松地循环它们。

我想创建一个框架或字典或变量来计算国家出现这样的总次数。

    country count
0   US      2
1   GERMANY 1
2   SG      2
3   AUS     1
4   SWISS   1
5   HK      2

我怎样才能做到这一点?它不必是数据框。

标签: pythonpandasdataframecount

解决方案


您可以按国家/地区对每个 df 进行分组,然后合并所有 dfs 和 sum 计数:

#group by countries and get count
df1 = csvDf1.groupby('country').count().reset_index()
df2 = csvDf2.groupby('country').count().reset_index()
df3 = csvDf3.groupby('country').count().reset_index()

#merge all dfs
combinedDf = df1.merge(df2, how='outer', on=['country'])
combinedDf = combinedDf.merge(df3, how='outer', on=['country'])

#sum all counts per country
combinedDf ['total']=combinedDf .iloc[:,1:].sum(1)
combinedDf  = combinedDf[['country', 'total']]

推荐阅读