python - 对 pandas 数据框列进行二值化

标签 python pandas

mean radius mean texture    mean perimeter  mean area   mean smoothness mean compactness    mean concavity  mean concave points mean symmetry   mean fractal dimension  ... worst texture   worst perimeter worst area  worst smoothness    worst compactness   worst concavity worst concave points    worst symmetry  worst fractal dimension classification
0   17.99   10.38   122.80  1001.0  0.11840 0.27760 0.3001  0.14710 0.2419  0.07871 ... 17.33   184.60  2019.0  0.1622  0.6656  0.7119  0.2654  0.4601  0.11890 0
1   20.57   17.77   132.90  1326.0  0.08474 0.07864 0.0869  0.07017 0.1812  0.05667 ... 23.41   158.80  1956.0  0.1238  0.1866  0.2416  0.1860  0.2750  0.08902 0
2   19.69   21.25   130.00  1203.0  0.10960 0.15990 0.1974  0.12790 0.2069  0.05999 ... 25.53   152.50  1709.0  0.1444  0.4245  0.4504  0.2430  0.3613  0.08758 0
3   11.42   20.38   77.58   386.1   0.14250 0.28390 0.2414  0.10520 0.2597  0.09744 ... 26.50   98.87   567.7   0.2098  0.8663  0.6869  0.2575  0.6638  0.17300 0
4   20.29   14.34   135.10  1297.0  0.10030 0.13280 0.1980  0.10430 0.1809  0.05883 ... 16.67   152.20  1575.0  0.1374  0.2050  0.4000  0.1625  0.2364  0.07678 0

假设我有一个像上面这样的 pandas dataFrame。 如果值高于 12.0,我想对平均半径列进行二值化(更改为 0 或 1)。

我尝试过的是

data_df.loc[data_df["平均半径"] > 12.0] = 0

但这给了我一个奇怪的结果。

我该如何解决这个问题?

最佳答案

如果您想将整列更改为 1 和 0,您可以稍微修改代码:

# 0 if greater than 12, 1 otherwise
data_df["mean_radius"] = (data_df["mean radius"] <= 12.0).astype(int)

如果您只想将半径大于 12 的列更改为 0(保持小于 12 的值不变):

# only change the values > 12
# this method is discouraged, see edit below
data_df[data_df["mean radius"] > 12.0]["mean radius"] = 0

编辑

正如@jp_data_analysis 指出的,chained indexing is discouraged 。执行第二个操作的首选方法是多轴索引,此处转载自 this answer如下:

# only change the values > 12
data_df.loc[data_df["mean radius"] > 12.0, "mean radius"] = 0

关于python - 对 pandas 数据框列进行二值化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48472156/

相关文章:

python - 按行值 pandas 的特定组合计算行数

python - Mechanize 和 Python 没有正确处理 cookie

python - 有没有人有 Python 的 YMODEM 包?

python - 在 QWebView 中设置用户代理

python - 有没有一种方法可以将两个(或更多)数据帧写入一个 Excel 电子表格?

python - 如何引用列表绘制 Pandas 数据框的值(索引问题)?

python - Pytorch中神经网络的前向雅可比行列式很慢

python - ORM 与 Python 中的 Neo4j 等图形数据库

python - 创建一个有限制的排列

python - 对于从 0 到数据帧长度(负 1)的所有 n,如何获得距离为 n 的每对行之间的最小比率?