为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 根据现有列的第一个唯一值创建新列

Pandas 根据现有列的第一个唯一值创建新列

largeQ 2021-08-17 18:45:58
我正在尝试向数据框中添加一个新列,其中只有来自现有列的唯一值。新列中的行可能会减少,其中 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


查看完整回答
反对 回复 2021-08-17
?
犯罪嫌疑人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


查看完整回答
反对 回复 2021-08-17
  • 3 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号