Python 如何重命名标题并基于其他标题名称向该列添加值?

Python 如何重命名标题并基于其他标题名称向该列添加值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有多个不同年份的熊猫数据帧,如下图所示: df1= 我想在2018年月度流量栏中为nan分配年度,从而实现该输出: Year b c Monthly Flow (2018) 1 2018 -0.041619 43.91 -0.041619 2 2018 0.011913 43.91 -0.041619 3 2018 -0.0488

我有多个不同年份的熊猫数据帧,如下图所示:

df1=

我想在2018年月度流量栏中为nan分配年度,从而实现该输出:

       Year           b      c     Monthly Flow (2018)     
1      2018   -0.041619  43.91               -0.041619
2      2018    0.011913  43.91               -0.041619
3      2018   -0.048801  43.91               -0.041619
4      2018    0.002857  43.91               -0.041619
5      2018    0.002204  43.91               -0.041619
6      2018   -0.007692  43.91               -0.041619
7      2018   -0.014992  43.91               -0.041619
8      2018   -0.035381  43.91               -0.041619
我知道如何用特定的年份替换这些nan,每次一个数据帧


但是,由于我有很多数据帧,而且将来还会有更多数据帧,我想知道一种自动执行此操作的方法,例如,从列Monthly Flow 2018中提取年份值。

假设Monthly Flow始终是第五列,您可以这样做:

import re
df = df.rename(columns={'Unnamed: 0': 'Year'})
df.iloc[:,0] = re.search('\d{4}', df.columns[4]).group(0)
说明: Research在一行中查找4个数字,并从第五列中提取它们

我将未命名的列重命名为Year

工作代码:
假设月流量始终为第5列,您可以这样做:

import re
df = df.rename(columns={'Unnamed: 0': 'Year'})
df.iloc[:,0] = re.search('\d{4}', df.columns[4]).group(0)
说明: Research在一行中查找4个数字,并从第五列中提取它们

我将未命名的列重命名为Year

工作代码: 使用稀土

使用稀土


月流量总是最后一列吗?不,列在中间,但总是在第五位。我只是没有为StimeCyIIS月度流写整个数据框,总是最后一列?不,列在中间,但总是在第五位。为了简单起见,我没有编写整个数据帧
import pandas as pd
import numpy as np
import re
df = pd.DataFrame({'Unnamed: 0': {0: np.nan},
 'a': {0: 1},
 'a2': {0: 1},
 'a3': {0: 1},
 'Monthly Flow (2018)': {0: 'b'}})
df = df.rename(columns={'Unnamed: 0': 'Year'})
df.iloc[:,0] = re.search('\d{4}', df.columns[4]).group(0)
import re
def find_year(column):
    year = column.name
    return int(re.search(r'\d{4}',year).group(0))


df = df.rename(columns={'Unnamed: 0' : 'Year'})
# change 3 to match the column location of your target column
df['Year'] = df['Year'].fillna(find_year(df.iloc[:,3]))
print(df)
     Year         b      c  Monthly Flow (2018)
0  2018.0 -0.041619  43.91            -0.041619
1  2018.0  0.011913  43.91            -0.041619
2  2018.0 -0.048801  43.91            -0.041619
3  2018.0  0.002857  43.91            -0.041619
4  2018.0  0.002204  43.91            -0.041619
5  2018.0 -0.007692  43.91            -0.041619
6  2018.0 -0.014992  43.91            -0.041619
7  2018.0 -0.035381  43.91            -0.041619