gpt4 book ai didi

python - 根据其他 csv 文件进行计数

转载 作者:行者123 更新时间:2023-11-30 22:46:35 25 4
gpt4 key购买 nike

我有一个数据框 df,其中有两列,分别称为“MovieName”和“Actors”。它看起来像:

MovieName    Actors
lights out Maria Bello
legend Tom Hardy*Emily Browning*Christopher Eccleston*David Thewlis

请注意,不同的 Actor 姓名之间用“*”分隔。我有另一个名为“gender.csv”的 csv 文件,其中根据所有 Actor 的名字来确定他们的性别。性别.csv 看起来像 -

ActorName    Gender
Tom male
Emily female
Christopher male

我想在数据框中添加两列“female_actors”和“male_actors”,其中分别包含该特定电影中女性和男性 Actor 的数量。

如何在 pandas 中同时使用 df 和 sex.csv 来完成此任务?

请注意 -

  1. 如果性别.csv 中不存在特定姓名,则不要将其计入总数。
  2. 如果一部电影中只有一名 Actor ,并且不存在于 sex.csv 中,则其计数应为零。

上面示例的结果应该是 -

MovieName    Actors      male_actors    female_actors
lights out Maria Bello 0 0
legend Tom Hardy*Emily Browning*Christopher Eccleston*David Thewlis 2 1

最佳答案

import pandas as pd

df1 = pd.DataFrame({'MovieName': ['lights out', 'legend'], 'Actors':['Maria Bello', 'Tom Hardy*Emily Browning*Christopher Eccleston*David Thewlis']})
df2 = pd.DataFrame({'ActorName': ['Tom', 'Emily', 'Christopher'], 'Gender':['male', 'female', 'male']})


def func(actors, gender):
actors = [act.split()[0] for act in actors.split('*')]
n_gender = df2.Gender[df2.Gender==gender][df2.ActorName.isin(actors)].count()
return n_gender

df1['male_actors'] = df1.Actors.apply(lambda x: func(x, 'male'))
df1['female_actors'] = df1.Actors.apply(lambda x: func(x, 'female'))

df1.to_csv('res.csv', index=False)
print df1

输出

Actors,MovieName,male_actors,female_actors
Maria Bello,lights out,0,0
Tom Hardy*Emily Browning*Christopher Eccleston*David Thewlis,legend,2,1

关于python - 根据其他 csv 文件进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40837190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com