python - 两列可能组合的并集

标签 python pandas

我的 DataFrame 看起来像这样:

A    B
100  1
100  2
200  2
200  3

我需要找到 A 和 B 值的所有可能组合,并使用这些组合创建新的数据框,第三列指示原始 df 中存在的每个组合:

A   B  C
100 1  True
100 2  True
100 3  False
200 1  False
200 2  True
200 3  True

我现在是怎么做的:

import pandas as pd

df = pd.DataFrame({'A' : [100,100,200,200], 'B' : [1,2,2,3]})
df['D'] = 42
df2 = df[['A','D']].merge(df[['B','D']], on = 'D')
  [['A','B']].drop_duplicates()
i1 = df.set_index(['A','B']).index
i2 = df2.set_index(['A','B']).index
df2['C'] = i2.isin(i1)
print(df2)

它有效,但看起来很丑。有更清洁的方法吗?

最佳答案

您可以使用:


df['C'] = True
df1 = df.set_index(['A','B'])
mux = pd.MultiIndex.from_product(df1.index.levels, names=df1.index.names)
df = df1.reindex(mux, fill_value=False).reset_index()
print (df)
     A  B      C
0  100  1   True
1  100  2   True
2  100  3  False
3  200  1  False
4  200  2   True
5  200  3   True

关于python - 两列可能组合的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45635115/

相关文章:

python - django 模型中是否有可用的方法,以便我可以使用字符串访问其字段名?

python - 查询雪花数据库不起作用,因为没有选择事件仓库

python - salt : manage 100+ virtualenvs on one host

python - 如何使用分类 sklearn 波士顿住房数据集通过 matplotlib 绘制线性图

python - 处理缺失数据

python - 如何使用 pandas groupby 对某些行进行降序排序,对某些行进行升序排序

python - 使用具有两列以上的 df 的子图中的堆叠条形图

python - 在 Pandas 中获取每两行不同的新数据框

python - 从字典创建 Pandas Dataframe 的问题

python - 如何在 Python 中持久存储并有效访问非常大的二维列表?