.replace只替换第一个值

时间:2017-10-15 17:17:04

标签: pandas replace

我有以下代码:

df_demo['Age'] = df_demo['Age'].replace([23842674135270370, 
23842674044440370, 23842674044420370, 23842674044430370], 
['18-24', '25-34', '35-44', '45+'])

(这些数字是广告ID代码,我试图将它们替换为他们定位的年龄段。)

代码只读取第一个数字并替换它(到18-24)。其余的数字不是阅读和替换。如果我翻转数字的顺序(比如将25-34配对移动到第一组),它将替换第一个配对但不替换其他配对。

我对.replace()有完全相同的构造 - 在()中使用两个列表 - 在我的程序中更进一步,并且它完美地工作。但这个不是,我无法弄清楚它为什么不起作用。

1 个答案:

答案 0 :(得分:1)

让我按Agestring列转换为dtype,然后将string替换为另一个:{/ p>

df_demo = pd.read_csv('demographics - Sheet1.csv', dtype={'Age':str})
print (df_demo.tail())

190  191  23842674135270370        Yes
191  192  23842674135270370        Yes
192  193  23842674044420370        Yes
193  194  23842674135270370        Yes
194  195  23842674044420370        Yes

df_demo['Age'] = df_demo['Age'].replace(
['23842674135270370','23842674044440370','23842674044420370','23842674044430370'], 
['18-24', '25-34', '35-44', '45+'])

print (df_demo.tail())
    Name    Age Newsletter
190  191  18-24        Yes
191  192  18-24        Yes
192  193  35-44        Yes
193  194  18-24        Yes
194  195  35-44        Yes