【问题标题】:how to use pandas 'apply' method to apply function on specific subset of dataframe?如何使用 pandas 'apply' 方法在数据帧的特定子集上应用函数?
【发布时间】:2019-05-02 02:20:50
【问题描述】:

目标是在 pandas 数据帧的特定子集上应用条件函数。我一直收到错误显示“('系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。','发生在索引 C')"

数据框:

import numpy as np
import pandas as pd


df1 = pd.DataFrame(np.arange(0,30).reshape(6,5),'row1 row2 row3 row4 row5 row6'.split(),'A B C D E'.split())  
df1


        A   B   C   D   E
row1    0   1   2   3   4
row2    5   6   7   8   9
row3    10  11  12  13  14
row4    15  16  17  18  19
row5    20  21  22  23  24
row6    25  26  27  28  29

这是我尝试过的功能

def func (x):
    if x <10:
        return "fit"
    else:
        return x + 10

df1.iloc[[1,2],[2,3]] = df1.iloc[[1,2],[2,3]].apply(func)

然后我不断收到错误

【问题讨论】:

  • 你的意思是df1[:]=np.where(df1&lt;10,'fit',df1+10)print(df1) ??

标签: python pandas


【解决方案1】:

尝试在数据框的子集上应用映射:

df_sub=df1.iloc[[1,2],[2,3]]
df_sub=df_sub.applymap(func)

【讨论】:

  • 你能告诉我为什么我的方法行不通吗?
  • 据我所知,我认为这还有很多,apply 在行/列上工作,而 applymap 在元素方面工作。在这个线程中有一个关于这个主题的很好的讨论:stackoverflow.com/questions/19798153/…
猜你喜欢
  • 2019-11-23
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 2021-03-29
相关资源
最近更新 更多