gpt4 book ai didi

python - 将 DF 拆分为多个 DF 并对每个 DF 执行所有操作的函数

转载 作者:行者123 更新时间:2023-12-04 03:59:25 27 4
gpt4 key购买 nike

我有一个 DF,里面有大约 20,000 行。我构建了一个 Python 脚本来对这些数据(包括数据透视表)运行大量清理和数学运算。

我想将此 DF 拆分为 3 个独立的 DF,然后根据列值将这 3 个 DF 拆分为另外 6 个 DF,并对 18 个生成的 DF 中的每一个运行操作。最后我想输出18个独立的excel文件。

注意:我无法在原始 DF 上运行所有操作后拆分数据,因为我在此过程中创建了数据透视表。

一开始我很想写一个函数来进行分割,但不知道该怎么做。

我尝试过的事情:对所有 DF 重复操作。

| total |  big  |  med  | small|   Type   |   Name   |
|:-----:|:-----:|:-----:|:----:|:--------:|:--------:|
| 5 | 4 | 0 | 1 | Pig | John |
| 6 | 0 | 3 | 3 | Horse | Mike |
| 5 | 2 | 3 | 0 | Cow | Rick |
| 5 | 2 | 3 | 0 | Horse | Paul |
| 5 | 2 | 3 | 0 | Cow | Nick |
| 5 | 2 | 3 | 0 | Cow | Peter |

所以我想按“类型”和“名称”拆分。拆分后,我想对所有数据帧运行操作——举个例子,让我们说“小”* 3。在对所有这些 dfs 运行操作后,我想将它们全部导出。我真的不想使用嵌入式 for 循环,因为实际上大约有 100 行操作正在完成,我不希望所有内容都缩进等等。

3 种不同的“类型”,6 种不同的“名称”

仅供引用 df combos = Pig/John, Pig/Mike, Pig/Rick, Horse/John....etc

编辑:

def main():

for idx, dg in df.groupby(['Type', 'Name']):
dg = func_1() << function that loads entire file as df
dg = func_2(dg)
dg = func_3(dg)
dg = func_4(dg)
df = fun_5(dg)

我无法完成这项工作。有什么想法吗?

最佳答案

DataFrame.groupby 的格言是“split-apply-combine”。在这种情况下,最后一部分是不可取的,您需要像“split-apply-export”这样的东西,这样我们就可以手动迭代这些组。

#SPLIT
for idx, gp in df.groupby(['Type', 'Name']):
# `idx` is a tuple of unique (Type, Name) combinations, i.e. ('Pig', 'John')
# `gp` is the susbet of the DataFrame equivalent to:
# df[df['Type'].eq(idx[0]) & df['Name'].eq(idx[1])]

# APPLY whatever complicated operation(s)
gp['small'] = gp['small']*3

# EXPORT
# Creates files 'Cow_Nick.csv', 'Cow_Peter.csv', 'Cow_Rick.csv', ...
gp.to_csv(f"{'_'.join(idx)}.csv")

输出:'Horse_Mike.csv'

'small' 乘以 3,仍保留原始索引。

,total,big,med,small,Type,Name
1,6,0,3,9,Horse,Mike

关于python - 将 DF 拆分为多个 DF 并对每个 DF 执行所有操作的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63306075/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com