按特定类计算一系列数据帧

时间:2016-03-01 09:22:35

标签: python pandas dataframe pivot-table

这两个数据框 c1 c2 包含一些公司及其所属的国家/地区。

## Data of c1: 6 company in 4 countries.
   Country    Company
0   USA    Walmart
1   USA    Apple
2   China  CNPC 
3   China  State_grid 
4   UK     BP 
5   Japan  Toyota    

## Data of c2: 10 company in the same 4 countries.    
   Country    Company
0   USA    Walmart
1   USA    Apple
2   USA    Verizon
3   USA    JP_Morgan
4   China  CNPC 
5   China  China_Bank 
6   UK     BP 
7   Japan  Toyota
8   Japan  Honda
9   Japan  Sony 

我们可以注意到 c1 c2 中的某些公司是不同的(例如:Honda),有些公司是相同的(例如:Walmart)。

我的目标

  

合并这两个数据框并总结每个国家/地区的公司数量。

一个。对于一个数据帧,我可以使用

> c1.Country.value_counts()
output:
USA      2
China    2
UK       1
Japan    1  

B中。对于具有相同内容的两个数据帧,我尝试使用unique函数来删除转发器。

>dc = pd.concat([c1.Company,c2.Company])
>print len(dc)
>print len(dc.unique())

Output:
> 16
> 11

如何结合c1& c2一起处理,过滤中继器?
然后,我可以得到如下统计结果:

   Country    Company
0   USA    Walmart
1   USA    Apple
2   USA    Verizon
3   USA    JP_Morgan
4   China  CNPC 
5   China  State_grid 
6   China  China_Bank 
7   UK     BP 
8   Japan  Toyota
9   Japan  Honda
10   Japan  Sony 

1 个答案:

答案 0 :(得分:1)

我认为您可以concat DataFrames然后drop_duplicatesreset_index

 c = pd.concat([c1, c2]).drop_duplicates(subset=['Country','Company']).reset_index(drop=True)
  Country     Company
0     USA     Walmart
1     USA       Apple
2     USA     Verizon
3     USA   JP_Morgan
4   China        CNPC
5   China  China_Bank
6      UK          BP
7   Japan      Toyota
8   Japan       Honda
9   Japan        Sony

print c.Country.value_counts()
USA      4
China    3
Japan    3
UK       1
Name: Country, dtype: int64