如何基于现有DataFrame列创建含Year列的新Pandas DataFrame
解决方法:给合并后的DataFrame添加Year列
嘿,你已经走对路啦!用pd.concat合并多个DataFrame的W列这步没问题,现在只需要把Year列加进去就行——不管是合并2个还是3个DF,方法都是通用的。我给你分两种常见情况说明:
情况1:原DF1/DF2/DF3本身都有Year列
如果每个原始DataFrame里都包含Year列,而且它们的Year值是一一对应的(比如索引一致,或者每行的年份完全匹配),那直接从任意一个DF里提取Year列添加到合并后的结果里就行:
# 先完成你已经做的合并操作 combined_w = pd.concat([DF1['W'], DF2['W'], DF3['W']], axis=1, keys=['DF1', 'DF2','DF3']) # 方法1:用assign()添加Year列(推荐,不会修改原合并对象) newDF = combined_w.assign(Year=DF1['Year']) # 方法2:直接列赋值(会修改combined_w,不需要保留原合并结果时可用) combined_w['Year'] = DF1['Year'] newDF = combined_w
情况2:Year是独立的外部数据
如果Year列是单独的列表、数组或者Series(比如你有一个单独维护的年份序列),直接赋值给新列就行,只要确保数据长度和合并后的DataFrame行数一致:
# 假设你的年份数据是这样的(长度要和combined_w的行数匹配) year_series = pd.Series([2018, 2019, 2020, 2021]) combined_w = pd.concat([DF1['W'], DF2['W'], DF3['W']], axis=1, keys=['DF1', 'DF2','DF3']) newDF = combined_w.assign(Year=year_series)
小提醒
- 一定要保证Year列的行数/长度和合并后的
combined_w完全一致,不然会出现NaN值或者报错。 - 如果原始DF的索引不一致,建议先给每个DF重置索引(
df.reset_index(drop=True)),再做合并和添加Year列的操作,避免索引不匹配导致的问题。
内容的提问来源于stack exchange,提问作者Chinmay
相关产品推荐
相关产品推荐

