【问题标题】:Python function with similar functionality as R split function与 R 拆分函数具有相似功能的 Python 函数
【发布时间】:2020-05-21 06:56:09
【问题描述】:

我有一个包含多列的数据框,我需要将其划分为由参数定义的组向量(列等)

R 有如下拆分功能:

数据框 A

 >   date  c1 c2 c3  c4 

 >   2021   1  1  a  ss

 >   2022   1  1  b  sa

 >   2023   3  1  b  sd

data_splitting= split(A, by=c('C1', 'C2'), keep.by=FALSE)

导致 R 向量

矢量

  >  1.1 

  >  2021 a ss

  >  2022 b sa

  >  3.1

  >  2023 b sd

我需要 python 中的类似功能

谢谢 科斯塔斯

【问题讨论】:

  • 您预计的出发时间是?一个numpy矩阵?或两个独立的数据帧,或一个系列
  • 我想将结果作为先知函数的输入。我想预测每对 c1 c2 结果

标签: python r pandas vector vectorization


【解决方案1】:

这可以通过 groupby in pandas 在 Pandas 中实现。

import pandas as pd

test_a = pd.DataFrame(dict(
  date=(2021, 2022, 2023),
  c1=(1,1,3),
  c2=(1,1,1),
  c3=("a", "b", "b"),
  c4 =("ss", "sa", "sd")
))


split_a = test_a.groupby(["c1", "c2"])

现在split_a 将是一个迭代器,它保存上面的数据帧。您可以通过迭代它们来恢复它们以创建数据框列表:

for indx, split_data in split_a:
    print("Index:", indx)
    print(split_data)
    #  if you need the values, just use split_data.values

因为您要为每个组应用预测;这可以通过对 group by 应用来完成。作为一个简单的例子,让我们做一个返回数据帧中行数的函数:

def nrows(df):
    return df.shape[0]

然后使用 apply 运行此函数将对每个组运行“预测函数”:

def nrows(df):
    return df.shape[0]

nrows_by_group = test_a.groupby(["c1", "c2"]).apply(nrows)

【讨论】:

    猜你喜欢
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多