gpt4 book ai didi

python - 集合的交集作为 Pandas 中的列

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

我有一个 df 例如:

df=pd.DataFrame.from_items([('i', [set([1,2,3,4]), set([1,2,3,4]), set([1,2,3,4]),set([1,2,3,4])]), ('j', [set([2,3]), set([1]), set([4]),set([3,4])])])

看起来像

>>> df
i j
0 {1, 2, 3, 4} {2, 3}
1 {1, 2, 3, 4} {1}
2 {1, 2, 3, 4} {4}
3 {1, 2, 3, 4} {3, 4}

我想计算 df.i.intersection(df.j) 并将其分配给第 k 列。也就是说,我想要这个:

df['k']=[df.i.iloc[t].intersection(df.j.iloc[t]) for t in range(4)]

>>> df.k
0 {2, 3}
1 {1}
2 {4}
3 {3, 4}
Name: k, dtype: object

有 df.apply() 吗?实际 df 是数百万行。

最佳答案

pandas 中使用 setlistdict 有点问题,因为最好使用标量:

df['k'] = [x[0] & x[1] for x in zip(df['i'], df['j'])]
print (df)
i j k
0 {1, 2, 3, 4} {2, 3} {2, 3}
1 {1, 2, 3, 4} {1} {1}
2 {1, 2, 3, 4} {4} {4}
3 {1, 2, 3, 4} {3, 4} {3, 4}

df['k'] = [x[0].intersection(x[1]) for x in zip(df['i'], df['j'])]
print (df)
i j k
0 {1, 2, 3, 4} {2, 3} {2, 3}
1 {1, 2, 3, 4} {1} {1}
2 {1, 2, 3, 4} {4} {4}
3 {1, 2, 3, 4} {3, 4} {3, 4}

apply 的解决方案:

df['k'] = df.apply(lambda x: x['i'].intersection(x['j']), axis=1)
print (df)
i j k
0 {1, 2, 3, 4} {2, 3} {2, 3}
1 {1, 2, 3, 4} {1} {1}
2 {1, 2, 3, 4} {4} {4}
3 {1, 2, 3, 4} {3, 4} {3, 4}

关于python - 集合的交集作为 Pandas 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45239540/

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