如何在Pandas DataFrame中为两位年份添加'19'生成四位年份?
解决Pandas两位年份转四位19XX的问题
嘿,我清楚你碰到的问题啦——你用add()拼接的时候搞反了顺序!df['Year'].add(df2)其实是把年份字符串放在前面,把列表里的'19'拼在后面,所以才会得到6919这种结果,而不是你想要的1969。
其实根本不用创建305个'19'的列表,Pandas的字符串列支持直接和字符串常量做前缀拼接,简单高效得多。给你两种靠谱的解决方法:
方法一:直接前缀拼接(推荐)
先确保年份列是字符串类型(如果已经是可以跳过第一步),然后直接把'19'加在前面:
# 确保年份列是字符串格式 df['Year'] = df['Year'].astype(str) # 前缀拼接得到四位年份 df['Year'] = '19' + df['Year']
方法二:用str.cat()方法指定拼接顺序
如果一定要用拼接方法,你可以用str.cat()明确指定要拼接的前缀:
df['Year'] = df['Year'].astype(str).str.cat(['19']*len(df), join='left')
不过这种方法不如第一种简洁,毕竟没必要手动创建重复的列表~
举个小例子验证:
假设我们有这样的DataFrame:
import pandas as pd df = pd.DataFrame({'Year': ['69', '68', '56']})
用方法一处理后,df['Year']就会变成:
0 1969 1 1968 2 1956 Name: Year, dtype: object
完全符合你的预期!
内容的提问来源于stack exchange,提问作者That Guy
相关产品推荐
相关产品推荐

