我是Python的新手,我正在尝试一个小项目并且有点困惑。
我有2个csv文件,如下所示:
all_cars:
first_Car,second_car
Mazda, Skoda
Ferrari, Volkswagen
Volkswagen, Toyota
BMW, Ferrari
BMW, Mercedes
super_cars:
super_car_name
Ferrari
BMW
Mercedes
我基本上试图做的只是计算文件1中文件2中的汽车的次数。如果汽车仅代表文件1而不代表文件2,我不想要它。
我根据我的示例文件尝试做的是:
Ferrari : 2
BMY : 2
Mercedes : 1
我这样做:
In [220]: d1.stack().value_counts().to_frame('car').loc[d2.super_car_name]
Out[220]:
car
Ferrari 2
BMW 2
Mercedes 1
其中d1
和d2
- 您的源DataFrames(可以使用pd.read_csv()
方法从CSV文件轻松解析):
In [218]: d1
Out[218]:
first_Car second_car
0 Mazda Skoda
1 Ferrari Volkswagen
2 Volkswagen Toyota
3 BMW Ferrari
4 BMW Mercedes
In [219]: d2
Out[219]:
super_car_name
0 Ferrari
1 BMW
2 Mercedes
您可以使用isin
查找匹配项,然后使用stack
和value_counts
将所有内容放在一个表中:
df1[df1.isin(df2.super_car_name.values)].stack().value_counts()
Ferrari 2
BMW 2
Mercedes 1
dtype: int64