小编jbo*_*xxx的帖子

python pandas:将数据帧传递给df.apply

本网站的长期用户,但第一次提问!感谢多年来一直在回答问题的所有仁慈的用户:)

df.apply最近一直在使用,理想情况下希望将数据帧传递到args参数中,看起来像这样: df.apply(testFunc, args=(dfOther), axis = 1)

我的最终目标是遍历我传入args参数的数据帧 df ,并针对原始数据帧的每一行检查逻辑,例如,并从 dfOther . 所以说我有一个这样的功能:

def testFunc(row, dfOther):
    for index, rowOther in dfOther.iterrows():
        if row['A'] == rowOther[0] and row['B'] == rowOther[1]:
            return dfOther.at[index, 'C']

df['OTHER'] = df.apply(testFunc, args=(dfOther), axis = 1)
Run Code Online (Sandbox Code Playgroud)

我目前的理解是args需要一个 Series 对象,因此如果我实际运行它,我们会收到以下错误:

ValueError: The truth value of a DataFrame is ambiguous. 
Use a.empty, a.bool(), a.item(), a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)

然而,在我写testFunc它只传递一个数据帧之前,我实际上已经写了priorTestFunc,它看起来像这样......而且它有效!

def priorTestFunc(row, dfOne, dfTwo):
    for index, rowOne in dfOne.iterrows(): …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

6
推荐指数
1
解决办法
1263
查看次数

具有多索引的 df.at 与 df.loc

我有一个关于之间的差异问题df.loc,并df.at针对具有多指标dataframes。我一直在查看来自 stackoverflow 的一些精彩资源,但它似乎并没有阐明我的问题。特别是这个... pandas .at 与 .loc(或者至少我不完全理解这里显示的内容)。

每熊猫文档,https://pandas-docs.github.io/pandas-docs-travis/generated/pandas.DataFrame.at.htmldf.at应该返回奇异值,其速度比df.loc,所以我倾向于想要使用df.at。让我展示我的困惑,因为它适用于df.at与 MultiIndex一起使用。

我有以下数据框:

df = pd.DataFrame({'field1':['foo']*6, 'field2':['bar']*6, 'field3': 
['a','a','b','b','b','c'],'value1':[0.4,0.5,0.4,0.7,.9,.4],'value2': 
[4000,4000,9000,9000,9000,10000]}, index=range(6))

df
Out[329]: 
  field1 field2 field3  value1  value2
0    foo    bar      a     0.4    4000
1    foo    bar      a     0.5    4000
2    foo    bar      b     0.4    9000
3    foo    bar      b     0.7    9000
4    foo    bar      b     0.9    9000
5    foo    bar      c     0.4   10000
Run Code Online (Sandbox Code Playgroud)

我想使用 MultiIndex 访问此数据框,因此我正在执行以下操作:

df …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

5
推荐指数
1
解决办法
2845
查看次数

dataframe.groupby 更改空数据框的 dtypes

所以我不确定以下内容本身是否是故意的,但这似乎是我之前使用的 pandas 0.18.0 的行为变化。我已经更新到 0.23.0 并且出现了一些奇怪的行为......

假设我有一些大数据框,被调用dfLarge,我df根据一些标准从中获取一个子集。(这部分问题对于复制并不是真正必要的,但它来自我的实际用例以及我如何注意到熊猫行为的变化)。但碰巧的是,我无法在 中找到符合我正在寻找的条件的匹配项dfLarge,因此df是空的。

什么是重要的是,df共享相同dtypesdfLarge。一般来说,对于某些人来说可能是这样的df

In [187]: df = pd.DataFrame(columns = ['field1','field2','field3','num1','num2'])

In [188]: df['num1'] = df['num1'].astype('float64')  # assume this was inherited from dfLarge

In [189]: df['num2'] = df['num2'].astype('float64')  # assume this was inherited from dfLarge

In [190]: df.dtypes
Out[190]:
field1     object
field2     object
field3     object
num1      float64
num2      float64
dtype: object
Run Code Online (Sandbox Code Playgroud)

所以现在我们有一个空数据框的一些字段和不同的数据类型df。当我df.groupby通过对field1和求和来维护我的索引的同时使用聚合我的数据时field2 …

python dataframe pandas pandas-groupby

4
推荐指数
1
解决办法
2798
查看次数

标签 统计

dataframe ×3

pandas ×3

python ×3

pandas-groupby ×1