使用 map() 时出错:根据另一列中的值创建新的 Pandas 列

安德烈亚斯K。

我应该通过比较此列('% Renewable')的值与同一列的中位数来创建一个新的 Pandas 列。结果应该构成一个新列。

当然,我可以使用 for 循环来做到这一点。虽然我才刚刚开始学习,但我想更多地使用 map、lambda 等方法。

因此我试过这个:

def above(x,y):
if x>=y:
    return 1
else:
    return 0

def answer_ten():
  Top15 = answer_one() #loads the dataframe and formats it

  Median=Top15['% Renewable'].median()

  Top15['HighRenew']=map(above, Top15['% Renewable'], Top15['% Renewable'].median()

# one try: list(map(above, (Top15['% Renewable'], Top15['% Renewable'].median())))  
# one more try: [*map(above, (Top15['% Renewable'], Top15['% Renewable'].median()))]  

return  Top15['HighRenew']

但是我得到一个错误而不是值:'float'对象不可迭代

我尝试在评论行中列出的替代方案,我从这里的另一篇文章中获得获取地图()以返回 Python 3.x 中的列表

到现在为止,我想出了一种不同的单行解决方案,如下所示:

Top15['HighRenew']=(Top15['% Renewable']>=Top15['% Renewable'].median()).astype('int')

但是我想知道如何使用 Lambda 或 map() 或 filter(?) 以不同的方式(当然更长)来实现这一点。

谁能指出我的替代解决方案?

谢谢。

internet_user

你可能只是想要above(Top15['% Renewable'], Top15['% Renewable'].median()). map接受一系列对象并将函数应用于每个对象,但您只想应用一次。你得到的错误是因为你传入的两个值不能循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Pandas根据另一列的值创建一列

根据 Pandas 中的另一列,使用 n 生成新列 w 值 1 到 n

使用 Pandas 根据另一列的值从相邻列中获取立即值

使用 PANDAS 从另一列中的行操作中创建新列

使用针对另一列的 if 语句在 Pandas 数据框中创建新列

使用Pandas根据另一列的值选择一列

根据 Pandas 中另一列中相似值的分组创建一个新列

Pandas 根据另一列的非空值创建一个新列

根据另一列 pandas 中特定值的累积出现次数创建一个新列

Pandas:根据另一列的文本值创建新列

Pandas - 根据 str 包含从另一列创建带有值的新列

根据pandas中另一列的状态创建一个新列

Pandas 使用 map 或 apply 从使用字典的调整中创建一个新列

如何使用 Pandas DataFrame 根据另一列中的行名称创建四列饼图?

pandas - 根据另一列更改列中的值

如何使用 pandas 更改特定列的数据并根据另一列中的特定值将它们相乘?

根据Pandas中另一列的值添加新列(python)

根据另一列pandas python的值在python中添加新列

有没有办法从另一列中减去一列的值,并使用 python 在 pandas 的新列中得到结果?

如何使用dplyr根据另一列的不同值在新列中填充不同的值?

使用 Pandas 根据数据框中的另一列值获取特定值的计数和总数

如何在Pandas中创建新列,条件是要重复另一列的值?

使用.map()修改多个Pandas列

使用另一列的偏移值比较Pandas数据框列中的值

如何使用pandas根据同一行另一列中存在的数据修改一列的数据

在R中根据值以及另一列的频率使用dplyr创建列

在Pandas数据框中使用groupby时,如何根据上一行中的值增加一列?

根据pandas中另一列的特定范围值创建分数列

Pandas / Python:根据另一列中的值设置一列的值