【发布时间】:2020-02-08 20:07:41
【问题描述】:
我有以下数据框:
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
谢谢!
【问题讨论】:
-
在这些情况下,我使用创建字典。 Key = name_of_df 并为该数据框赋值。
dict['name_i'] = dataframe_i不知道能不能动态创建变量,看看有没有人知道!干杯! -
你想要一个包含所有水果的数据框还是一个包含一个水果的数据框列表?
-
检查
eval。 -
@alec_djinn 在这种情况下我想要 5 个单独的数据帧,其中数据帧名称来自列表:apple_df、banana_df、mandarin_df 和 kiwi_df。但我不想每次都像这样调用函数:
apple_df = split_all_fruits(df, 'apple') banana_df = split_all_fruits(df, 'banana')和其他水果。
标签: python pandas list for-loop