我试图用numpy.where函数将numpy数组中的一些数字替换为1或0,但是我一次只能做一个。 例如,当我打印出“1”时,它只会将大于3.8845的值替换为1,但其他小于3.8845的值仍然保持不变,我希望小于3.8845的值也更改为0,但我不知道怎么做。 如果你知道解决办法,一定要告诉我。
import numpy as np
import pandas as pd
happiness_2019 = pd.read_csv('2019.csv')
df = pd.DataFrame(happiness_2019,columns=['Score']).to_numpy()
ones = np.where(df>3.8845,1,df)
zeros = np.where(df<3.8845,0,df)
zeros
# dummy data
df = pd.DataFrame({'Score':np.random.rand(10)*10})
#convert to 0,1
df['Score'] = (df['Score']>3.8845).astype(int)
尝试使用此技术
ones = df>3.8845
zeros = df<3.8845
之后,您可以研究如何将布尔数据框架转换为1和0,如下所示:
zeros = zeros.astype(int)
您可以使用apply,然后使用lambda函数,您可以验证并添加1或0。
df['Score'].apply(lambda x: 1 if (x>yourvalue) else 0, axis=1)