【问题标题】:Splitting / Divide dataframe every 10 rows每 10 行拆分/划分数据帧
【发布时间】:2020-10-25 11:08:58
【问题描述】:

我正在尝试将我的数据框拆分为 10 行,并为每 10 行找到聚合函数(平均值、SD 等),然后再次将其合并为 1 个数据框。以前我使用.groupby 函数对数据进行分组,但无法将数据拆分为 10 行。

这就是我所做的:

  def sorting (df):
    grouped = df.groupby(['Activity']).
    l_grouped=list(grouped)

我将分组结果转换为列表(l_grouped),但我不知道是否可以将行与每个元组/列表分开? 结果与原始数据框相同,但由“活动”分隔。例如,将“Standing”作为目标值(“Activity”)的行可以通过调用 l_grouped[1][0](类型列表/元组)来访问。 l_grouped [1][1] 将仅返回单词“Standing”。 我可以使用以下方法访问分组结果:

  for i in range(len(df_sort)):
      print(df_sort[i][1])

df_sort 指的是调用sorting(df)的结果 有什么办法可以分割/划分每行的元组/列表?然后从中创建聚合函数?

【问题讨论】:

  • 为了清楚起见,请发布示例输入和预期输出。
  • 你好,我已经编辑了这个问题。我希望它能让您更清楚地了解我的问题

标签: python pandas dataframe tuples pandas-groupby


【解决方案1】:

我建议使用窗口函数 + 步幅的小技巧:

step = 10
window = 10

df = pd.DataFrame({'a': range(100)})
df['a'].rolling(window).sum()[::step]

如果这不是您正在寻找的确切结果,请查看documentation 以获取有关窗口边界等的更多详细信息...

【讨论】:

  • 为什么范围是100?
【解决方案2】:

你可以这样做:

import numpy as np

step = 10
df["id"] = np.arange(len(df))//step

gr = df.groupby("id")
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-27
    • 2022-10-02
    • 2020-09-20
    • 2020-09-19
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    相关资源
    最近更新 更多