0

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

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中的类似功能

谢谢科斯塔斯

4

1 回答 1

0

这可以在 Pandas 中通过groupbyin实现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)
于 2020-04-17T06:33:08.777 回答