Python 与另一列相比,熊猫返回1或0';是的
我有一个dataframe,我正在尝试创建一个返回1或0的新列。逻辑是如果状态的['Avg_Temp']大于或等于['Avg_Temp'].mean(),则我希望['Hot']列的值为“1”,否则它的值应为“0” 我的尝试如下,但我的df['Hot']结果都是'1',所以我知道我做错了什么 数据:Python 与另一列相比,熊猫返回1或0';是的,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个dataframe,我正在尝试创建一个返回1或0的新列。逻辑是如果状态的['Avg_Temp']大于或等于['Avg_Temp'].mean(),则我希望['Hot']列的值为“1”,否则它的值应为“0” 我的尝试如下,但我的df['Hot']结果都是'1',所以我知道我做错了什么 数据: 错误在这一行: df10['Hot'] = df10.loc[df10['Avg_Temp'] >= TempMean] = 1 df10.loc[df10['Avg_Temp']>=Temp
错误在这一行:
df10['Hot'] = df10.loc[df10['Avg_Temp'] >= TempMean] = 1
df10.loc[df10['Avg_Temp']>=TempMean]=1
的意思是:“将1设置为与条件匹配的行”。然后将此操作的结果分配给列Hot
。您要做的是将该行替换为:
df10.loc[df10['Avg_Temp'] >= TempMean, 'Hot'] = 1
错误在这一行:
df10['Hot'] = df10.loc[df10['Avg_Temp'] >= TempMean] = 1
df10.loc[df10['Avg_Temp']>=TempMean]=1
的意思是:“将1设置为与条件匹配的行”。然后将此操作的结果分配给列Hot
。您要做的是将该行替换为:
df10.loc[df10['Avg_Temp'] >= TempMean, 'Hot'] = 1
df10['Hot']=df10.loc[df10['Avg_Temp']>=TempMean]=1
不做你想做的事。这相当于
df10.loc[df10['Avg_Temp'] >= TempMean] = 1
df10['Hot'] = 1
它首先将Avg_Temp column>=TempMean的每一行设置为1,然后将Hot column设置为1
你可能想要
In [51]: df10["Hot"] = 0
In [52]: df10.loc[df10["Avg_Temp"] >= TempMean, "Hot"] = 1
In [53]: df10
Out[53]:
Avg_Temp Hot
MI 66 1
AL 78 1
OH 50 0
VT 64 1
NB 34 0
或者更简单一点
df10["Hot"] = (df10["Avg_Temp"] >= TempMean).astype(int)
我们不必首先设置df10[“热”]。
df10['Hot']=df10.loc[df10['Avg_Temp']>=TempMean]=1
不做你想做的事。这相当于
df10.loc[df10['Avg_Temp'] >= TempMean] = 1
df10['Hot'] = 1
它首先将Avg_Temp column>=TempMean的每一行设置为1,然后将Hot column设置为1
你可能想要
In [51]: df10["Hot"] = 0
In [52]: df10.loc[df10["Avg_Temp"] >= TempMean, "Hot"] = 1
In [53]: df10
Out[53]:
Avg_Temp Hot
MI 66 1
AL 78 1
OH 50 0
VT 64 1
NB 34 0
或者更简单一点
df10["Hot"] = (df10["Avg_Temp"] >= TempMean).astype(int)
这样我们就不必先设置df10[“热”]。试试看
df['Hot'] = np.where((df['Avg_Temp'] > df['Avg_Temp'].mean()), 1, 0)
试一试
我喜欢
avg = df.Avg_Temp
df.assign(Hot=avg.ge(avg.mean()).astype(np.uint8))
我喜欢
avg = df.Avg_Temp
df.assign(Hot=avg.ge(avg.mean()).astype(np.uint8))
代码有几个问题,例如缩进。编辑问题,使其更加清晰。目前,什么是
df
和什么是df10
之间存在混淆<代码>df10从来没有定义过。这可能就足够了:df10['Hot'][df10['Avg_Temp']>=TempMean]=1
。请注意,倒数第二行中实际上有两个赋值。@Evert:通常应该避免这样的链式赋值。代码中有几个问题,例如缩进。编辑问题,使其更加清晰。目前,什么是df
和什么是df10
之间存在混淆<代码>df10从来没有定义过。这可能就足够了:df10['Hot'][df10['Avg_Temp']>=TempMean]=1
。请注意,倒数第二行实际上有两个赋值。@埃弗特:通常应该避免这样的链式赋值。好的解决方案+1。好的解决方案+1。我使用了两个中较短、较简单的一个,解决了我的问题。非常感谢。我使用了两者中较短、较简单的一种,它解决了我的问题。非常感谢。