Pandas 基于系列内容和数据帧生成布尔数据帧

Pandas 基于系列内容和数据帧生成布尔数据帧,pandas,dataframe,boolean,series,Pandas,Dataframe,Boolean,Series,我有: df = pd.DataFrame( [ [22, 33, 44], [55, 11, 22], [33, 55, 11], ], index=["abc", "def", "ghi"], columns=list("abc") ) # size(3,3) 以及: 然后,我基于unique和df创建一个新的df,以便: df_new = pd

我有:

 df = pd.DataFrame(
        [
            [22, 33, 44],
            [55, 11, 22],
            [33, 55, 11],
        ],
        index=["abc", "def", "ghi"],
        columns=list("abc")
    ) # size(3,3)
以及:

然后,我基于
unique
df
创建一个新的df,以便:

df_new = pd.DataFrame(index=unique, columns=df.columns) # size(5,3)
从这个新创建的df中,我想基于
unique
df
创建一个新的布尔df,因此最终结果是:

 df_new = pd.DataFrame(
        [
            [0, 1, 1],
            [1, 0, 1],
            [1, 1, 0],
            [0, 0, 1],
            [1, 1, 0],
        ],
        index=unique,
        columns=df.columns
    ) 
这个新的df要么为真,要么为假,这取决于该值是否存在于原始数据帧中。例如,第一列有三个值:[22、55、33]。在尺寸为(5,3)的df中,第一列为:[0,1,1,0,1],即[0,22,33,0,55]

我尝试了
filter2=unique.isin(df)
,但这不起作用,也不为空。我尝试应用筛选器,但返回的维度不正确。如何执行此操作?

与一起使用,然后通过检查是否缺少值,将
True->1
False->0
映射转换为整数,最后通过以下方式删除索引和列名:

辅助系列不是必需的,但如果有更多值或辅助系列需要更改顺序,请使用“添加”:


太好了,正是我想要的。谢谢
 df_new = pd.DataFrame(
        [
            [0, 1, 1],
            [1, 0, 1],
            [1, 1, 0],
            [0, 0, 1],
            [1, 1, 0],
        ],
        index=unique,
        columns=df.columns
    ) 
df_new = (df.stack()
            .reset_index(name='v')
            .pivot('v','level_1','level_0')
            .notna()
            .astype(int)
            .rename_axis(index=None, columns=None))
print (df_new)
    a  b  c
11  0  1  1
22  1  0  1
33  1  1  0
44  0  0  1
55  1  1  0
#added 66
unique = pd.Series([11, 22, 33, 44, 55,66])

df_new = (df.stack()
            .reset_index(name='v')
            .pivot('v','level_1','level_0')
            .reindex(unique)
            .notna()
            .astype(int)
            .rename_axis(index=None, columns=None))
print (df_new)
    a  b  c
11  0  1  1
22  1  0  1
33  1  1  0
44  0  0  1
55  1  1  0
66  0  0  0