我正在尝试向数据框中添加一个新列,其中只有来自现有列的唯一值。新列中的行可能会减少,其中 np.nan 值可能会出现重复项。import pandas as pdimport numpy as npdf = pd.DataFrame({'a':[1,2,3,4,5], 'b':[3,4,3,4,5]})df a b0 1 31 2 42 3 33 4 44 5 5目标: a b c0 1 3 31 2 4 42 3 3 nan3 4 4 nan4 5 5 5我试过了:df['c'] = np.where(df['b'].unique(), df['b'], np.nan)它抛出: operands could not be broadcast together with shapes (3,) (5,) ()
3 回答

牛魔王的故事
TA贡献1830条经验 获得超3个赞
mask + duplicated
您可以使用 Pandas 方法来屏蔽系列:
df['c'] = df['b'].mask(df['b'].duplicated())
print(df)
a b c
0 1 3 3.0
1 2 4 4.0
2 3 3 NaN
3 4 4 NaN
4 5 5 5.0

犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
ppg 写道:
df['c'] = df['b'].mask(df['b'].duplicated())
print(df)
a b c
0 1 3 3.0
1 2 4 4.0
2 3 3 NaN
3 4 4 NaN
4 5 5 5.0
我喜欢代码,但最后一列也应该给出 NaN
0 1 3 3.0
1 2 4 4.0
2 3 3 NaN
3 4 4 NaN
4 5 5 NaN
添加回答
举报
0/150
提交
取消