[英]Python function with similar functionality as R split function
我有一个包含多列的数据框,我需要将其划分为由参数(列等)定义的组向量
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 中的类似功能
谢谢科斯塔斯
这可以通过熊猫来实现groupby
在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
由于您正在为每个组应用预测; 这可以通过对组的申请来完成。 作为一个简单的例子,让我们做一个返回数据帧中行数的函数:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.