python - 如何重命名标题并根据其他标题名称添加值(到此列)?
问题描述
我有多个像这样的 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
我想分配给列nan
中的年份Monthly Flow (2018)
,从而实现此输出:
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
特定年份替换这些,一次一个数据框。
但是,由于我有很多数据框(将来还会有更多),我想知道一种自动执行此操作的方法,例如从 column 中提取年份值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)
推荐阅读
- c - 用于自定义工具链的 CMake 工具链文件(-c 编译器选项不同含义)
- ios - 如何更改 ContainerView 中嵌入 TableVeiw 中的变量?迅速
- r - 如何通过R中的函数从所有列中减去第一列的值
- javascript - 如何在动态添加/删除输入字段中获取唯一随机值
- c# - 加快 70,000 行的插入速度(SProc、C#)
- dart - 在 Flutter 中使用完整的 Dart SDK
- angular - 访问 Nativescript angular 组件中的 exoplayer 元素
- sql - sql查找列的最大值并选择为新字段
- apache-spark - 连接到 HiverServer2 后的 Spark 读取表只提供模式而不是数据
- security - 带有设备内存的幽灵