gpt4 book ai didi

python - 如果 df 中的列的值是同一数据框中另一列的值之一(逐行),则匹配

转载 作者:太空宇宙 更新时间:2023-11-04 07:28:15 25 4
gpt4 key购买 nike

df

col1  col2
A a|x|y
B a|x|y
C c|x|z
D e|j|y

我的目标是创建一个名为“status”的新列,以查看 col1 中的条目是否是 col2 中的条目之一(由竖线分隔)。输出应该是这样的

col1  col2     status
A a|x|y True
B a|x|y False
C c|x|z True
D e|j|y False

我的代码:

df["col1"]= df["col1"].str.lower()
df['status']=df['col1'].isin(df['col2'])

但这是将“状态”列中的所有条目都设为 False

请帮帮我,拜托!!!

最佳答案

get_dummies

df.col2.str.get_dummies().mul(pd.get_dummies(df.col1.str.lower())).sum(1).astype(bool)

0 True
1 False
2 True
3 False
dtype: bool

a = pd.get_dummies(df.col1.str.lower())
b = df.col2.str.get_dummies()
status = b.mul(a).sum(1).astype(bool)
df = df.assign(status=status)

df

col1 col2 status
0 A a|x|y True
1 B a|x|y False
2 C c|x|z True
3 D e|j|y False

get_dummieseinsum

a = pd.get_dummies(df.col1.str.lower())
b = df.col2.str.get_dummies()
a, b = a.align(b, fill_value=0)
status = np.einsum('ij,ij->i', a, b).astype(bool)

df = df.assign(status=status)
df

col1 col2 status
0 A a|x|y True
1 B a|x|y False
2 C c|x|z True
3 D e|j|y False

关于python - 如果 df 中的列的值是同一数据框中另一列的值之一(逐行),则匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53557806/

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