[英]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.