gpt4 book ai didi

python - 在 Pandas Dataframe 中检查一列并返回另一列

转载 作者:行者123 更新时间:2023-12-02 11:34:48 25 4
gpt4 key购买 nike

我有一个像这样的数据框:

   Title                Participants
0 ShowA B. Smith,C. Ball
1 ShowB T. Smooth
2 ShowC K. Dulls,L. Allen,B. Smith

我在“参与者”列中拆分 , 并为每个单元格创建一个列表。接下来,我检查每个列表中的特定参与者。在此示例中,我正在检查 B.史密斯K.沉闷

for item in df['Participants']:
listX = item.split(',')
if 'B. Smith' in listX or 'K. Dulls' in listX:
print(listX)

这将返回:

['B. Smith', 'C. Ball']
['K. Dulls', 'L. Allen', 'B. Smith']

1) 我猜想在我的 if 语句中有一种更简洁的方法来检查多个参与者。我很乐意接受任何建议。

2)这是我一直在转圈的地方,如何返回与我返回的列表关联的Title

在此示例中,我想返回:

ShowA
ShowC
<小时/>

设置代码:

import pandas as pd

df = pd.DataFrame(data={'Title': ['ShowA', 'ShowB', 'ShowC'],
'Participants': ['B. Smith,C. Ball', 'T. Smooth', 'K. Dulls,L. Allen,B. Smith']})

target_participants = ['B. Smith', 'K. Dulls']

最佳答案

get_dummies

您可以使用pandas.Series.str.get_dummies并创建一个数据框,其中列是名称所在位置的 bool 表达式。

dummies = df.Participants.str.get_dummies(',').astype(bool)
dummies

B. Smith C. Ball K. Dulls L. Allen T. Smooth
0 True True False False False
1 False False False False True
2 True False True True False

然后我们就可以找到您的结果

df.loc[dummies['B. Smith'] | dummies['K. Dulls'], 'Title']

0 ShowA
2 ShowC
Name: Title, dtype: object
<小时/>

包含

否则,您可以使用pandas.Series.str.contains。首先,我们需要在列表中指定您要查找的人员,然后构造一个字符串以用作正则表达式。

people_to_look_for = ['B. Smith', 'K. Dulls']
pattern = '|'.join(people_to_look_for)
mask = df.Participants.str.contains(pattern)
df.loc[mask, 'Title']

0 ShowA
2 ShowC
Name: Title, dtype: object

关于python - 在 Pandas Dataframe 中检查一列并返回另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60172533/

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