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

我正在尝试向数据框中添加一个新列,其中只有来自现有列的唯一值。新列中的行可能会减少,其中 np.nan 值可能会出现重复项。


import pandas as pd

import numpy as np


df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[3,4,3,4,5]})

df


    a   b

0   1   3

1   2   4

2   3   3

3   4   4

4   5   5

目标:


    a   b   c

0   1   3   3

1   2   4   4

2   3   3   nan

3   4   4   nan

4   5   5   5

我试过了:


df['c'] = np.where(df['b'].unique(), df['b'], np.nan)

它抛出: operands could not be broadcast together with shapes (3,) (5,) ()


largeQ
浏览 161回答 3
3回答

牛魔王的故事

mask + duplicated您可以使用 Pandas 方法来屏蔽系列:df['c'] = df['b'].mask(df['b'].duplicated())print(df)   a  b    c0  1  3  3.01  2  4  4.02  3  3  NaN3  4  4  NaN4  5  5  5.0

犯罪嫌疑人X

ppg 写道:df['c'] = df['b'].mask(df['b'].duplicated())print(df)   a  b    c0  1  3  3.01  2  4  4.02  3  3  NaN3  4  4  NaN4  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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python