相关疑难解决方法(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 apply()?

这是一个自我回答的QnA,旨在指导用户应用的缺陷和好处.

我已经看到很多关于Stack Overflow问题的答案涉及使用apply.我也看到用户评论他们说" apply很慢",应该避免".

我已经阅读了很多关于性能主题的文章,解释apply很慢.我还在文档中看到了一个关于如何apply简单地传递UDF的便利函数的免责声明(现在似乎无法找到).因此,普遍的共识是,apply如果可能,应该避免.但是,这引发了以下问题:

  1. 如果apply是如此糟糕,那为什么它在API中呢?
  2. 我应该如何以及何时制作我的代码apply- 免费?
  3. 是否有过任何地方的情况apply不错的(比其他可能的解决方案更好)?

python performance apply pandas

68
推荐指数
3
解决办法
8380
查看次数

替换pandas数据框中的行

我想从一个空数据框开始,然后每次添加一行.我甚至可以从0数据帧开始data=pd.DataFrame(np.zeros(shape=(10,2)),column=["a","b"]),然后每次更换一行.

我怎样才能做到这一点?

python dataframe pandas

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

如何在熊猫中有条件地交换列

我有一个df有 4 列的熊猫数据框 。例如,这是一个玩具示例:

foo1    foo2     foo3  foo4
egg     cheese   2     1
apple   pear     1     3
french  spanish  10    1
Run Code Online (Sandbox Code Playgroud)

列是 foo1、foo2、foo3 和 foo4

我想交换列 foo1 和 foo2,并在 foo3 < foo4 时交换列 foo3 和 foo4。所以结果将是:

foo1     foo2    foo3  foo4
cheese   egg     1     2
apple    pear    1     3
spanish  french  1     10
Run Code Online (Sandbox Code Playgroud)

我可以找到需要交换的行,df[df['foo3'] < df['foo4']] 但如何有效地进行交换。我的数据框很大。

python pandas

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

标签 统计

pandas ×4

python ×4

dataframe ×2

apply ×1

performance ×1

updates ×1