Python ---用数据框循环字典

时间:2019-10-17 12:10:26

标签: python pandas loops dataframe dictionary

我有一个数据框字典

list_of_dfs={'df1:Dataframe','df2:Dataframe','df3:Dataframe','df4:Dataframe'}

每个数据框包含相同的变量(价格,数量,价格,“出售/购买”),我希望对其进行操作以最终获得新的DataFrame子集。我的新数据框必须通过变量中包含“出售”的观察结果来过滤名为“出售/购买”的变量。

sell=df[df["Sale/Purchase"]=="Sell"]

我的问题是如何遍历字典,以便使用此新子集获得新字典?

我不知道如何编写此命令来执行循环。我知道它必须像这样开始:

 # Create an empty dictionary called new_dfs to hold the results
new_dfs = {}
# Loop over key-value pair
for key, df in list_of_dfs.items():

但是由于我对循环访问数据帧字典的了解很少,所以我不知道如何编写filter命令。如果有人可以帮助我,我将非常感激。

谢谢。

3 个答案:

答案 0 :(得分:0)

尝试一下

dict_of_dfs={'df1':'Dataframe','df2':'Dataframe','df3':'Dataframe','df4':'Dataframe'}


# Create an empty dictionary called new_dfs to hold the results
new_dfs = {}
# Loop over key-value pair
for key, df in dict_of_dfs.items():
    new_dfs[key] = df[df["Sale/Purchase"]=="Sell"]

说明:

new_dfs = {} # Here we have created a empty dictionary.
# dictionary contains keys and values.
# to add keys and values to our dictionary, 
# we need to do it as shown below,
new_dfs[our_key_1] = our_value_2
new_dfs[our_key_2] = our_value_2
.
.
.

答案 1 :(得分:0)

您可以映射功能:

lambda df: df[df["Sale/Purchase"] == "Sell"]

如何:

语法= map(fun, iter)

map(lambda df: df[df["Sale/Purchase"] == "Sell"], list_of_dfs)

您可以将其映射到listset

对于dict

df_dict = {k: df[df["Sale/Purchase"]=="Sell"] for k, df in list_of_dfs.items()}

答案 2 :(得分:0)

类似的东西:

sells = {k: v for (k, v) in list_of_df.items() if v["Sale/Purchase"] == "Sell"}

此模式称为字典理解。根据{{​​3}},这是最快,最Python化的方法。

您应该提供正在处理的数据的示例,以获取更精确的答案。