【发布时间】:2020-06-01 05:45:47
【问题描述】:
我有:
df = pd.DataFrame(
[
[22, 33, 44],
[55, 11, 22],
[33, 55, 11],
],
index=["abc", "def", "ghi"],
columns=list("abc")
) # size(3,3)
和:
unique = pd.Series([11, 22, 33, 44, 55]) # size(1,5)
然后我根据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) 但这不起作用,也不是null。我尝试应用过滤器,但返回的尺寸不正确。我该怎么做?
【问题讨论】:
标签: pandas dataframe boolean series