嗨,我是python的新手,正在从事一个项目:
每年我的数据帧如下:
df1
rating0 rating1 UAA YEAR Zip
18088.0 295.0 10833.0 ... 2010-2014 601
40859.0 154.0 16353.0 ... 2010-2014 602
df2
rating0 rating1 UAA YEAR Zip
18088.0 299.0 10033.0 ... 2011-2015 601
40859.0 152.0 16253.0 ... 2011-2015 602
我想合并这两个csv文件,但希望我的数据彼此堆叠 例如:
2010-2014
2010-2014
2010-2014
2011-2015
2011-2015
2011-2015
我也想将这些年份替换为一个年份(例如2010-2014),就像2014年一样
我的输入:
df1 = pd.read_csv(r"2014_zcta.csv")
df2 = pd.read_csv(r"2015_zcta.csv")
finaldf = pd.concat([df1, df2], ignore_index=True)
finaldf['YEAR'].replace('2010-2014','2014')
finaldf['YEAR'].replace('2011-2015','2015')
但是输出没有任何变化。它不会彼此叠加,年份也不会更改为2014或2015
答案 0 :(得分:0)
尝试以下代码段
final_df = pd.concat(objs = [df1, df2], axis = 0)
final_df['YEAR'] = final_df.YEAR.apply(lambda year: str(year)[-4:])
假设final_df定义如下:
final_df = pd.DataFrame({'amount':[2000, 3000, 4000, 5000], 'YEAR':['2010-2012', '2010-2012', '2015-2016', '2016-2018']})
final_df
>>> amount YEAR
0 2000 2010-2012
1 3000 2010-2012
2 4000 2015-2016
3 5000 2016-2018
然后定义一个新列'EndYear',如下所示:
final_df['EndYear'] = final_df.YEAR.apply(lambda year: str(year)[-4:])
因此,在打印final_df
时,您应该获得:
final_df
>>> amount YEAR EndYear
0 2000 2010-2012 2012
1 3000 2010-2012 2012
2 4000 2015-2016 2016
3 5000 2016-2018 2018
让我知道这是否有帮助。
答案 1 :(得分:0)
系列或数据帧上的操作通常不会就地完成。这意味着该操作不会更改序列或数据框本身;它只返回应用操作的新系列或数据帧。
在您的示例中,替换
finaldf['YEAR'].replace('2010-2014','2014')
使用
finaldf['YEAR'] = finaldf['YEAR'].replace('2010-2014','2014')