Sil*_*t-J 3 python series calculated-columns dataframe pandas
我有一个包含国家名称及其能源输出百分比的数据框。我需要添加一个新列,根据该国的能源产出是高于还是低于能源产出的中位数,指定 1 或 0。一些虚拟代码是:
import pandas as pd
def answer():
df = pd.DataFrame({'name':['china', 'america', 'canada'], 'output': [33.2, 15.0, 5.0]})
df['newcol'] = df.where(df['output'] > df['output'].median(), 1, 0)
return df['newcol']
answer()
Run Code Online (Sandbox Code Playgroud)
代码返回
ValueError: 错误数量的项目通过 2,放置意味着 1
我觉得这是一个非常简单的修复程序,但我不熟悉Pandas. 请帮助结束我的沮丧
@Vaishali 解释了为什么pd.DataFrame.where没有按预期工作,并建议您np.where改用,这是非常好的建议。
我会提供你可以简单地将你的布尔结果转换为整数。
设置
df = pd.DataFrame({
'name':['china', 'america', 'canada'],
'output': [33.2, 15.0, 5.0]
})
Run Code Online (Sandbox Code Playgroud)
选项1
df['newcol'] = (df['output'] > df['output'].median()).astype(int)
Run Code Online (Sandbox Code Playgroud)
选项 2
或通过使用底层 numpy 数组更快
o = df['output'].values
df['newcol'] = (o > np.median(o)).astype(int)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2820 次 |
| 最近记录: |