【问题标题】:Series to dictionary系列到字典
【发布时间】:2020-11-11 13:41:33
【问题描述】:

我有以下代码和输出

    mean = dataframe.groupby('LABEL')['RESP'].mean()
    minimum = dataframe.groupby('LABEL')['RESP'].min()
    maximum = dataframe.groupby('LABEL')['RESP'].max()
    std = dataframe.groupby('LABEL')['RESP'].std()
    df = [mean, minimum, maximum]

还有下面的输出

[LABEL
     0.0   -1.193420
     1.0    0.713425
     2.0   -1.066513
     3.0   -0.530640
     4.0   -2.130600
     6.0    0.084747
     7.0    1.190506
     Name: RESP, dtype: float64,
     LABEL
     0.0   -1.396179
     1.0   -0.233459
     2.0   -1.631165
     3.0   -1.271057
     4.0   -2.543640
     6.0   -0.418091
     7.0   -0.004578
     Name: RESP, dtype: float64,
     LABEL
     0.0    0.042247
     1.0    0.295534
     2.0    0.128233
     3.0    0.243975
     4.0    0.088077
     6.0    0.085615
     7.0    0.693196
     Name: RESP, dtype: float64

]

但是我希望输出是字典

{label_value: [mean, min, max, std_dev]}

例如

{1: [1, 0, 2, 1], 2: [0, -1, 1, 1], ... }

【问题讨论】:

  • 了解.agg() 方法,您将需要它。

标签: python-3.x pandas dataframe dictionary data-science


【解决方案1】:

我假设您的起始 Dataframe 等同于我合成的一个。

  1. 在一次聚合调用中计算所有聚合值。四舍五入的值,因此输出适合此答案
  2. reset_index() 合计然后to_dict()
  3. 列表理解以将 dict 重新格式化为您的规范
df = pd.DataFrame([[l, random.random()] for l in range(8) for k in range(500)], columns=["LABEL","RESP"])
d = df.groupby("LABEL")["RESP"].agg([np.mean, np.min, np.max, np.std]).round(4).reset_index().to_dict(orient="records")
{e["LABEL"]:[e["mean"],e["amin"],e["amax"],e["std"]] for e in d}

输出

{0: [0.5007, 0.0029, 0.997, 0.2842],
 1: [0.4967, 0.0001, 0.9993, 0.2855],
 2: [0.4742, 0.0003, 0.9931, 0.2799],
 3: [0.5175, 0.0062, 0.9996, 0.2978],
 4: [0.4909, 0.0018, 0.9952, 0.2912],
 5: [0.4787, 0.0077, 0.9976, 0.291],
 6: [0.4878, 0.0009, 0.9942, 0.2806],
 7: [0.4989, 0.0066, 0.9982, 0.278]}

【讨论】:

    猜你喜欢
    • 2019-09-28
    • 2021-07-24
    • 2017-03-13
    • 2020-10-05
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多