gpt4 book ai didi

python - Pandas 有条件地返回另一列中相应位置的值

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:50 24 4
gpt4 key购买 nike

我对 Python 和一般编程都很陌生。

我试图弄清楚如何在 pandas 中不同列内的相应位置返回逗号分隔值,并将此输出存储在新列中。请参阅下面的示例

key_list = [cat, dog, pig]

A B
---------------------
1 cat
1, 2 dog, cat
1, 2, 3 pig, dog, cat

我想要一个如下的输出:

A           B          cat_result      dog_result     pig_result 
----------------------------------------------------------------
1 cat 1 NAN NAN
6, 2 dog, cat 2 6 NAN
8, 3, 1 pig, dog, cat 1 3 8

因此,我希望能够检查 B 列中是否存在键(a、b 或 c),如果存在,则返回 A 列中相应逗号分隔值中的值在该单元格内。

到目前为止我有这个:

for key in key_list:
df["{}_result".format{key}] = df.apply(lambda _: int(key in _.B), axis=1)

这将为每个 key_result 创建一个新列,如果该键存在于 B 中则给出 1,如果不存在则给出 0。不确定从这里去哪里或者这是否是正确的方法。任何帮助深表感谢。谢谢!

最佳答案

我在 lambda 中使用 np.core.defchararray.split 来帮助拆分列的值。我本可以使用pd.Series.str.split,但我选择了这个。

然后,我使用 lambda 并逐行迭代以创建字典列表。然后可以将该字典列表传递给 pd.DataFrame 构造函数。

最后,我使用 join 附加原始数据帧。

s = lambda x: np.core.defchararray.split(x.values.astype(str), ', ')
df.join(
pd.DataFrame(
[dict(zip(*t)) for t in zip(s(df.B), s(df.A))]
).add_suffix('_result')
)

A B cat_result dog_result pig_result
0 1 cat 1 NaN NaN
1 6, 2 dog, cat 2 6 NaN
2 8, 3, 1 pig, dog, cat 1 3 8

关于python - Pandas 有条件地返回另一列中相应位置的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45947061/

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