【问题标题】:Operations on pandas dataframe between values of specific columns / rows在特定列/行的值之间对熊猫数据框进行操作
【发布时间】:2016-04-11 13:24:39
【问题描述】:

pandas 新手,我正在尝试使用 pandas 管理一些数据框操作,其中我在多索引数据框上有 4 列,并且我需要一个额外的列,其中该列中的值将等于一个中的值行除以特定行。

在下面的示例中,我希望对于每个条目,新列“Agg”是每个类型(1、2、3)的“值”列除以 Calc 的“值”的结果.

        Date        Values  Agg
2016-01-01  Type 1    17     1.7
            Type 2    23     2.3
            Type 3    11     1.1
            Calc      10     1.0
2016-01-02  Type 1    25     0.25
            Type 2    39     0.39
            Type 3    34     0.34
            Calc      100    1.00
2016-01-03  Type 1    20     1.00
            Type 2    9      0.45
            Type 2    12     0.60
            Calc      20     1.00

在我的实际代码中,我有一个 groupby“日期”和其他索引:这些更改取决于从查询到数据库的结果。

提前致谢!

【问题讨论】:

  • 对不起,你是在df['Agg'] = df['Values'].div(df['Values'].iloc[-1])之后吗?
  • 您好,埃德,感谢您的回复。在我的代码中,我有多个日期和每个日期的“Calc”行值。我需要找到一种方法来提及我希望索引中给定日期的除法的特定值。
  • 您能否充实您的问题以更好地解释
  • 我在最初的帖子中编辑了代码。数据框很大,有很多日期;我想要实现的是能够,无论数据框的大小如何,始终为值字段和每个日期计算“Type n”/“Calc”。感谢您的帮助!

标签: python pandas dataframe


【解决方案1】:

下面的代码有效。我花了太多时间写它,所以我不得不把它留在那里。如果您需要解释,请告诉我!

def func(df1):
    idx = df1.index.get_level_values(0)[0]
    df1 = df1.loc[idx]
    return (df1['Values'] / df1.loc['Calc']['Values']).to_frame()

df.groupby(level=0).apply(func)

【讨论】:

  • 在某些情况下它确实工作得很好,但我最终隔离了这个值并为我的代码添加了一个额外的列,这样我就避免了一些数据争吵错误。谢谢!
猜你喜欢
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 2023-01-10
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多