【发布时间】:2018-07-16 12:37:03
【问题描述】:
我有一个值范围从 0.0 到 1.0 的 pandas 列。
我想根据阈值将此列转换为二进制列(0 或 1),即如果值为
【问题讨论】:
我有一个值范围从 0.0 到 1.0 的 pandas 列。
我想根据阈值将此列转换为二进制列(0 或 1),即如果值为
【问题讨论】:
通过gt(>)创建布尔掩码,然后将其转换为integers:
df = pd.DataFrame({'col':[.4,0.5,.1]})
threshold = .2
df['new'] = df['col'].gt(threshold).astype(int)
print (df)
col new
0 0.4 1
1 0.5 1
2 0.1 0
【讨论】:
df.column = df.column > threshold
df.column.astype(int)
【讨论】:
我会创建一个辅助列,然后遍历行并为每个单元格设置值。像这样的:
import pandas as pd
import numpy as np
a = np.random.random_sample(5)
df = pd.DataFrame({"A": a})
df["Helper"] = ""
for i in range(len(df)):
if df.loc[i,"A"] <= 0.5:
df.loc[i,"Helper"] = 0
else:
df.loc[i,"Helper"] = 1
这会导致:
A Helper
0 0.114089 0
1 0.309759 0
2 0.158169 0
3 0.444199 0
4 0.645443 1
【讨论】:
itertuples()