【问题标题】:Pandas DataFrame - adding columns in for loop vs another approachPandas DataFrame - 在 for 循环中添加列与另一种方法
【发布时间】:2017-08-06 12:05:56
【问题描述】:

我们将一段时间内的 n 个点(例如 22 个点)的测量值存储在实时存储中。现在我们正在寻找对上述几点趋势的一些理解。为了获得目标,我们将测量值读入 pandas DataFrame (python)。在这个 DataFrame 中,点现在是列,行是各自的测量时间。

我们希望通过为每个现有列插入“均值”和“标准差”列来扩展数据框,其中包含平均值和标准差的新列,这是一个特定的度量。这意味着每 22 个测量点有两个新列。

现在的问题是,在迭代现有列的同时添加新的均值和标准列是否最好,或者是否有其他更有效的 DataFrame 内置操作或技巧?

我们的理解是,在 for 循环中更新 DataFrame 是迄今为止最糟糕的做法。

感谢您的任何意见或建议。

【问题讨论】:

  • 如果每个周期有 22 个点和 1000 个样本,你是说要 22 个均值还是 1000 个均值?
  • 如果您需要 22 个点/列的均值和标准,为什么要列?整个列中的平均值或标准偏差的值是否相同。在这种情况下,您可以创建一个新的数据框来存储此信息。提出您的问题,请尝试查看数据框的 .apply() 方法。
  • @JohnZwinck - 22 表示和 22 标准,但在所有行上。所以每点有 1000 个手段,这就是为什么我们认为要为点添加所有手段的新列
  • @ClockSlave - 这是在哪里发生的?我的意思是我是否迭代列,然后我是否按列发布应用?如果这能让事情变得更容易,我可能总是会创建转置和迭代行。

标签: python-3.x pandas for-loop dataframe


【解决方案1】:

从 cmets 中,我想这就是您要寻找的 -

import pandas as pd 
import numpy as np 

df = pd.DataFrame(np.random.normal(size = (1000,22))) # created an example dataframe
df.loc[:, 'means'] = df.mean(axis = 1)
df.loc[:, 'std'] = df.mean(axis = 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多