【发布时间】:2019-08-30 09:12:41
【问题描述】:
我正在尝试一些新的东西。我想根据影响另一列值的某些条件填充一个新的 df 列。
我有一个包含两列(ID、零售商)的数据框。我想根据 ID 列中的 id 填充零售商列。我知道如何在 SQL 中使用 CASE 语句来执行此操作,但是如何在 python 中进行呢?
我看过这个例子,但它并不是我想要的。
Python : populate a new column with an if/else statement
import pandas as pd
data = {'ID':['112','5898','32','9985','23','577','17','200','156']}
df = pd.DataFrame(data)
df['Retailer']=''
if df['ID'] in (112,32):
df['Retailer']='Webmania'
elif df['ID'] in (5898):
df['Retailer']='DataHub'
elif df['ID'] in (9985):
df['Retailer']='TorrentJunkie'
elif df['ID'] in (23):
df['Retailer']='Apptronix'
else: df['Retailer']='Other'
print(df)
我期望看到的输出是这样的:
ID Retailer
0 112 Webmania
1 5898 DataHub
2 32 Webmania
3 9985 TorrentJunkie
4 23 Apptronix
5 577 Other
6 17 Other
7 200 Other
8 156 Other
【问题讨论】:
-
一般要注意 '112'(文本字符串)与 112(数字)不同,因此在检查两个值是否相等时,如果混合类型,将无法匹配.
-
感谢@MrFelix 的提示。会记住这一点。
标签: python python-3.x pandas if-statement