Как подсчитать, сколько раз строки появляются в столбце из нескольких фреймов данных - PullRequest
0 голосов
/ 06 мая 2020

У меня есть несколько фреймов данных, которые выглядят следующим образом и имеют тот же формат.

это 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

Как я могу это сделать? Это не обязательно должен быть фрейм данных.

1 Ответ

0 голосов
/ 07 мая 2020

Вы можете сгруппировать каждый df по стране, а затем объединить все dfs и суммы:

#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']]
...