Intersection of sets as columns in pandas(集合的交集作为 pandas 中的列)
本文介绍了集合的交集作为 pandas 中的列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个 df,例如:
I have a df such as:
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 列.也就是说,我想要这个:
I would like to compute df.i.intersection(df.j) and assign that to be column k. That is, I want this:
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 是数百万行.
Is there a df.apply() for this? The actual df is millions of rows.
推荐答案
使用 set
s, list
s 和 dict
s in pandas
有点问题,因为最好使用标量:
Working with set
s, list
s and dict
s in pandas
is a bit problematic, because best working with scalars:
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}
应用
的解决方案:
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}
这篇关于集合的交集作为 pandas 中的列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:集合的交集作为 pandas 中的列
基础教程推荐
猜你喜欢
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 筛选NumPy数组 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01