gpt4 book ai didi

python - DataFrame 列的笛卡尔积并在 Python 中将新创建的行设置为 0

转载 作者:太空狗 更新时间:2023-10-30 02:54:35 36 4
gpt4 key购买 nike

假设,一个 DataFrame 的形式是:

   column1  column2  is_duplicate
0 xyz XYZ 1
1 xyz XyZ 1
2 abc ABC 1
3 abc aBc 1

如何在 column1column2 上执行笛卡尔积,使得新创建的行的值为 0 而原始行在 is_duplicate 列?

输出后预期的DataFrame:

   column1  column2  is_duplicate
0 xyz XYZ 1
1 xyz XyZ 1
2 xyz ABC 0
3 xyz aBc 0
4 abc XYZ 0
5 abc XyZ 0
6 abc ABC 1
7 abc aBc 1

最佳答案

你可以使用 pd.MultiIndex.from_product形成笛卡尔积。由于这是一个索引,您可以将其传递给 df.reindex扩展数据框为索引中的每个值包含一行:

import numpy as np 
import pandas as pd

df = pd.DataFrame({'column1': ['xyz', 'xyz', 'abc', 'abc'],
'column2': ['XYZ', 'XyZ', 'ABC', 'aBc'],
'is_duplicate': [1, 1, 1, 1]})

cols = ['column1', 'column2']
index = pd.MultiIndex.from_product([df[col].unique() for col in cols],
names=cols)
result = df.set_index(['column1','column2']).reindex(index, fill_value=0).reset_index()
print(result)

产量

  column1 column2  is_duplicate
0 xyz XYZ 1
1 xyz XyZ 1
2 xyz ABC 0
3 xyz aBc 0
4 abc XYZ 0
5 abc XyZ 0
6 abc ABC 1
7 abc aBc 1

关于python - DataFrame 列的笛卡尔积并在 Python 中将新创建的行设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45257778/

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