相关疑难解决方法(0)

在逐行迭代时更新pandas中的数据帧

我有一个像这样的熊猫数据框(它是一个非常大的)

           date      exer exp     ifor         mat  
1092  2014-03-17  American   M  528.205  2014-04-19 
1093  2014-03-17  American   M  528.205  2014-04-19 
1094  2014-03-17  American   M  528.205  2014-04-19 
1095  2014-03-17  American   M  528.205  2014-04-19    
1096  2014-03-17  American   M  528.205  2014-05-17 
Run Code Online (Sandbox Code Playgroud)

现在我想逐行迭代,当我遍历每一行时,每行的值ifor 可以根据某些条件改变,我需要查找另一个数据帧.

现在,我如何在迭代时更新它.尝试了一些他们都没有工作的事情.

for i, row in df.iterrows():
    if <something>:
        row['ifor'] = x
    else:
        row['ifor'] = y

    df.ix[i]['ifor'] = x
Run Code Online (Sandbox Code Playgroud)

这些方法似乎都不起作用.我没有看到数据框中的值已更新.

python updates dataframe pandas

166
推荐指数
7
解决办法
18万
查看次数

pandas .at与.loc

我一直在探索如何优化我的代码并运行pandas .at方法.根据文档

基于标签的快速标量访问器

与loc类似,at提供基于标签的标量查找.您也可以使用这些索引器进行设置.

所以我跑了一些样品:

建立

import pandas as pd
import numpy as np
from string import letters, lowercase, uppercase

lt = list(letters)
lc = list(lowercase)
uc = list(uppercase)

def gdf(rows, cols, seed=None):
    """rows and cols are what you'd pass
    to pd.MultiIndex.from_product()"""
    gmi = pd.MultiIndex.from_product
    df = pd.DataFrame(index=gmi(rows), columns=gmi(cols))
    np.random.seed(seed)
    df.iloc[:, :] = np.random.rand(*df.shape)
    return df

seed = [3, 1415]
df = gdf([lc, uc], [lc, uc], seed)

print df.head().T.head().T
Run Code Online (Sandbox Code Playgroud)

df 好像:

            a                                        
            A         B         C         D         E …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

49
推荐指数
4
解决办法
3万
查看次数

如何在数据帧的每一行上应用函数?

我是Python新手,我不知道如何解决以下问题.

我有一个功能:

def EOQ(D,p,ck,ch):
    Q = math.sqrt((2*D*ck)/(ch*p))
    return Q
Run Code Online (Sandbox Code Playgroud)

说我有数据帧

df = pd.DataFrame({"D": [10,20,30], "p": [20, 30, 10]})

    D   p
0   10  20
1   20  30
2   30  10

ch=0.2
ck=5
Run Code Online (Sandbox Code Playgroud)

chck是浮点类型.现在我想将公式应用于数据帧的每一行,并将其作为额外的行'Q'返回.一个例子(不起作用)将是:

df['Q']= map(lambda p, D: EOQ(D,p,ck,ch),df['p'], df['D']) 
Run Code Online (Sandbox Code Playgroud)

(仅返回'map'类型)

在我的项目中我需要更多这种类型的处理,我希望找到有用的东西.

python function pandas

14
推荐指数
2
解决办法
3万
查看次数

为什么在我对庞大的数据框架进行修改后,这个函数"没有"?

我有一个带时间戳温度和风速值的DataFrame,以及将它们转换成"风寒"的功能.我正在使用iterrows在每一行上运行该函数,并希望通过一个漂亮的"Wind Chill"列获得一个DataFrame.

然而,虽然它似乎正在经历,并且实际上至少已经"工作"了一次,但我似乎无法一致地复制它.我觉得这是我对DataFrames结构缺失的一般情况,但我希望有人可以提供帮助.

In [28]: bigdf.head()
Out[28]: 


                           Day  Temperature  Wind Speed  Year
2003-03-01 06:00:00-05:00  1    30.27        5.27        2003
2003-03-01 07:00:00-05:00  1    30.21        4.83        2003
2003-03-01 08:00:00-05:00  1    31.81        6.09        2003
2003-03-01 09:00:00-05:00  1    34.04        6.61        2003
2003-03-01 10:00:00-05:00  1    35.31        6.97        2003
Run Code Online (Sandbox Code Playgroud)

所以我添加了一个'Wind Chill'列bigdf并预填充NaN.

In [29]: bigdf['Wind Chill'] = NaN
Run Code Online (Sandbox Code Playgroud)

然后我尝试迭代行,添加实际的风寒.

In [30]: for row_index, row in bigdf[:5].iterrows():
    ...:     row['Wind Chill'] = windchill(row['Temperature'], row['Wind Speed'])
    ...:     print row['Wind Chill']
    ...:
24.7945889994
25.1365267133
25.934114012
28.2194307516
29.5051046953
Run Code Online (Sandbox Code Playgroud)

正如您所说,新值 …

python pandas

3
推荐指数
1
解决办法
4157
查看次数

标签 统计

pandas ×4

python ×4

dataframe ×2

function ×1

updates ×1