考虑几个选项以了解哪个选项最适合以下场景:
我在 Pandas 中有一个数据框,看起来像
CODE NAME COL1 COL2 COL3
IN INDIA x x z
US USA r s s
IND INDIA f d d
RU RUSSIA g f d
USA USA d s s
IN INDIA d d a
我想创建一个新列,比如 POSSIBLE_CODES,这样它就是对应的 NAME 列已经看到的所有代码的列表。 所以我的目标 df 应该是这样的:
CODE NAME COL1 COL2 COL3 POSSIBLE_CODES
IN INDIA x x z [IN, IND]
US USA r s s [US, USA]
IND INDIA f d d [IN, IND]
RU RUSSIA g f d [RU]
USA USA d s s [US, USA]
IN INDIA d d a [IN, IND]
请您参考如下方法:
您可以创建一个新系列,其中索引是您的 NAME 列,您的值是每个 NAME 可能的 CODE:
s = df.groupby('NAME').CODE.unique().rename('POSSIBLE')
现在使用 pd.Series.map:
df.assign(POSSIBLE=df.NAME.map(s))
CODE NAME COL1 COL2 COL3 POSSIBLE
0 IN INDIA x x z [IN, IND]
1 US USA r s s [US, USA]
2 IND INDIA f d d [IN, IND]
3 RU RUSSIA g f d [RU]
4 USA USA d s s [US, USA]
5 IN INDIA d d a [IN, IND]
