使用pandas在csv中发生python计数

问题描述 投票:2回答:2

我是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
python pandas
2个回答
2
投票

我这样做:

In [220]: d1.stack().value_counts().to_frame('car').loc[d2.super_car_name]
Out[220]:
          car
Ferrari     2
BMW         2
Mercedes    1

其中d1d2 - 您的源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

2
投票

您可以使用isin查找匹配项,然后使用stackvalue_counts将所有内容放在一个表中:

df1[df1.isin(df2.super_car_name.values)].stack().value_counts()

Ferrari     2
BMW         2
Mercedes    1
dtype: int64
© www.soinside.com 2019 - 2024. All rights reserved.