![](/img/trans.png)
[英]How to rank unique values based on a column with reference to other column header name
[英]How to rename a header and add values (to this column) based on other header name?
我有多個像這樣的 Pandas 數據幀(不同年份):
df1=
Unnamed: 0 b c Monthly Flow (2018)
1 nan -0.041619 43.91 -0.041619
2 nan 0.011913 43.91 -0.041619
3 nan -0.048801 43.91 -0.041619
4 nan 0.002857 43.91 -0.041619
5 nan 0.002204 43.91 -0.041619
6 nan -0.007692 43.91 -0.041619
7 nan -0.014992 43.91 -0.041619
8 nan -0.035381 43.91 -0.041619
我想在Monthly Flow (2018)
列中為nan
分配年份,從而實現這個 output:
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
,一次一個 dataframe。
但是,由於我有很多數據框(將來還會有更多),我想知道一種自動執行此操作的方法,例如通過從Monthly Flow (2018)
列中提取年份值。
假設每月流量始終是第 5 列,您可以這樣做:
import re
df = df.rename(columns={'Unnamed: 0': 'Year'})
df.iloc[:,0] = re.search('\d{4}', df.columns[4]).group(0)
re.search
連續查找 4 個數字並從第五列中提取它們。
我將Unnamed
列重命名為Year
。
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)
使用re
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.