gpt4 book ai didi

python - 在 for 循环中创建 pandas dfs

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:29 25 4
gpt4 key购买 nike

我有以下数据框:

import pandas as pd
df = pd.DataFrame({'name':['apple', 'banana', 'apple', 'mandarin', 'kiwi', 'kiwi'], 'val':[1,5,3,4,5,3]})

我想创建单独的数据帧,将水果名称传递给以下函数:

def split_all_fruits(df, fruit):
return df[df['name'] == fruit]

然后我可以简单地调用函数来创建数据帧:

apple_df = split_all_fruits(df, 'apple')
banana_df = split_all_fruits(df, 'banana')
#and other fruits

但我想在 for 循环中创建数据帧,而不是每次为每个水果调用函数。但是是否可以创建 for 循环,一次从每个水果的列表中产生 5 个数据帧名称的数据帧?像这样:

#name of dfs
name_of_dfs = ['apple_df', 'banana_df', 'mandarin_df', 'kiwi_df']
#fruit names in df
fruit_name = ['apple', 'banana', 'mandarin', 'kiwi']
#loop to create dfs, but i dont know how to assign list of names in name_of_dfs to respective fruit df
for fruit in fruit_name:
df_final = split_all_fruits(df,fruit)
print(df_final)
#it prints all dfs together, but not seperate df with name from list

谢谢!

最佳答案

虽然这可以通过 eval()globals() 来完成,但更好(更干净、更易于编程管理)的方法是使用 dict 代替,例如:

dfs = {name: split_all_fruits(df, name) for name in fruit_name}

被访问为,例如:

dfs['apple']

编辑

如果您真的想拥有名为apple_df 等的变量,一种方法是修改globals()字典,例如:

globals().update({name + '_df': split_all_fruits(df, name) for name in fruit_name})

被访问为,例如:

apple_df

请注意,这被认为是不好的做法!

关于python - 在 for 循环中创建 pandas dfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58338834/

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