python - Pandas 仅替换包含数字的列的数字
问题描述
我有超过 100 列的数据框。但在这里我试图替换整个数据框中的数字,其列包含数字(Int/float/任何数字格式)。
我知道如何单独处理列,但我正在寻找一些智能代码,如果值 <= 0 和 111 如果值 > 50,则有效地将值替换为 -5。
下面是代码。
import numpy as np
import pandas as pd
df = pd.DataFrame({'Name': ['Avery Bradley', 'Jae Crowder', 'John Holland', 'R.J. Hunter'],
'Team': ['Boston Celtics',
'Boston Celtics',
'Boston Celtics',
'Boston Celtics'],
'Number1': [0.0, 999.0, -30.0, 28.0],
'Number2': [1000, 500, -10, 25],
'Position': ['PG', 'SF', 'SG', 'SG']})
#df["Number1"].values[df["Number1"] > 50] = 999
#df["Number1"].values[df["Number1"] < 0] = -5
df[ df > 50 ] = 888
df[ df < 0 ] = -5
解决方案
您可以select_dtypes
在np.select
此处用于多个条件:
m = df.select_dtypes(np.number)
df[m.columns] = np.select([m>50,m<0],[888,-5],m)
print(df)
Name Team Number1 Number2 Position
0 Avery Bradley Boston Celtics 0.0 888.0 PG
1 Jae Crowder Boston Celtics 888.0 888.0 SF
2 John Holland Boston Celtics -5.0 -5.0 SG
3 R.J. Hunter Boston Celtics 28.0 25.0 SG
推荐阅读
- javascript - Discord Bot 如何删除特定用户角色
- django - 将错误值传递给模板中的 JS 代码。姜戈
- php - AJAX 请求不显示任何数据
- javascript - 选择后如何关闭下拉菜单?
- azure-devops - 如何在 Azure Devops 中显示来自 TestResults 的标准输出
- google-apps-script - 动态生成的工作表上的复选框
- testing - 如何读取 .xcresult 文件以生成报告
- r - 在第一个 NA 之后和最后一个 NA 之前取每一行的最小日期/值?
- sql-server - 如何将 SQLServer UTCDATE 配置为与 Windows Server 相同?
- lambda - aws-lex 可以用来构建对话流机器人吗?