【发布时间】:2022-01-20 13:47:13
【问题描述】:
我有一个包含 'COUNTRY' 列的数据框。我想在数据框中插入一个新列 'REGION',该列在每一行中都包含该国家所属地区的列表。例如,如果 'COUNTRY' 列是:
In [5]: df['COUNTRY']
Out[5]:
0 ITALY
1 UNITED STATES
2 CHINA
3 FRANCE
4 BRAZIL
Name: COUNTRY, dtype: object
我希望 'REGION' 列是:
df['REGION']
Out[8]:
0 [ROW, EU]
1 [UNITED STATES]
2 [ROW, ASIA]
3 [ROW, EU]
4 [ROW]
Name: REGION, dtype: object
'ROW' 代表世界其他地区,'EU' 代表欧洲等。
我使用np.select() 尝试了以下操作,但出现错误。
# insert region column
condlist = [
(df.COUNTRY == 'ITALY'),
(df.COUNTRY == 'UNITED STATES'),
(df.COUNTRY != 'UNITED STATES'),
(df.COUNTRY == 'CHINA'),
]
region = [
['ROW', 'EU'],
['UNITED STATES'],
['ROW'],
['ROW', 'ASIA']
]
print(np.select(condlist, region, ['ROW']))
请注意,对于未包含在condlist[] 测试中的国家/地区,我想为其分配区域['ROW']。
我得到的错误是:
ValueError: shape mismatch: objects cannot be broadcast to a single shape
【问题讨论】:
标签: python pandas dataframe numpy