假设我有一个数据帧列。我想创建一个新列,如果旧列中的相应值高于平均值,则给定观察值为1。但如果另一列中的值是平均值或低于该值,则该值应为0。
这样做的最快方法是什么?
答案 0 :(得分:3)
假设您有以下DataFrame:
df = pd.DataFrame({'A': [1, 4, 6, 2, 8, 3, 7, 1, 5]})
df['A'].mean()
Out: 4.111111111111111
与均值的比较会得到一个布尔向量。你可以把它强制转换为整数:
df['B'] = (df['A'] > df['A'].mean()).astype(int)
或使用np.where:
df['B'] = np.where(df['A'] > df['A'].mean(), 1, 0)
df
Out:
A B
0 1 0
1 4 0
2 6 1
3 2 0
4 8 1
5 3 0
6 7 1
7 1 0
8 5 1