python - 如何在 Pandas 数据框中的列上应用格式
问题描述
我有一个包含 90 列的 pandas 数据框,我想对每一列应用一种格式。每列都有自己的格式,具有格式的函数与列的名称相同。我想将格式应用于数据框中的每一列。
例如,假设 dv, dw 是我的数据框 df 的两列:
dv
1
2
1
1
5
5
dw
2
2
1
3
2
3
def dv(dv):
if dv==1:
return 1
else:
return 0
def dw(dw):
if dw==2:
return 1
else:
return 0
我正在使用以下命令:
df['dv']=df['dv'].apply(dv)
df['dw']=df['dw'].apply(dw)
输出 :
dv
1
0
1
1
0
0
dw
1
1
0
0
1
0
问题陈述:我不想为每一列都写一个 .apply 方法,因为我有 90 列并且想要减少代码行数。
解决方案
您可以使用包含要修改的列的名称及其相应条件和值的字典来进行替换。然后,使用 apply 函数根据字典替换值,如下所示:
data = [
[1, 2],
[2, 2],
[1, 1],
[1, 3],
[5, 2],
[5, 3]
]
df = pd.DataFrame(data, columns = ["dv", "dw"])
dict_ = {
"dv": {
"condition": 1,
"x": 1,
"y": 0
},
"dw": {
"condition": 2,
"x": 1,
"y": 0
}
}
def func(x):
column = x.name
return np.where(x == dict_[column]["condition"], dict_[column]["x"], dict_[column]["y"])
df[dict_.keys()].apply(func)
例子:
输入:
dv dw
0 1 2
1 2 2
2 1 1
3 1 3
4 5 2
5 5 3
输出:
dv dw
0 1 1
1 0 1
2 1 0
3 1 0
4 0 1
5 0 0
推荐阅读
- java - AWS SSM 参数存储未获取所有键/值
- javascript - AureliaJS 测试中的 and 是什么意思?
- entity-framework-6 - postgresql 自定义转换以匹配不同的案例类型
- php - 选择字段中的必需标签不起作用
- ios - 我无法在我的 iphone 7 上使用 Xcode 构建并运行离子应用程序,构建失败
- elasticsearch - 弹性搜索文档中的部分更新
- swift - RxSwift - 谁是观察者?
- python - 我应该使用哪种授权授予类型?
- node.js - FormData POST 请求引发网络错误
- angular6 - 守卫执行后,未经授权的url返回主屏幕不显示数据