Python---循环遍历带有数据框的字典
Posted
技术标签:
【中文标题】Python---循环遍历带有数据框的字典【英文标题】:Python---loop over a dictionary with dataframes 【发布时间】:2020-02-14 08:37:29 【问题描述】:我有一个数据框字典
list_of_dfs='df1:Dataframe','df2:Dataframe','df3:Dataframe','df4: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():
但是由于我对循环数据帧字典的了解很少,我不知道如何编写过滤器命令。如果有人可以帮助我,我将非常感激。
提前致谢。
【问题讨论】:
这个list_of_dfs
是一个集合,而不是一个列表或字典。
new_dfs = k: df[df["Sale/Purchase"]=="Sell"] for k, df in list_of_dfs.items()
。假设你写错了引号'df1': df1
【参考方案1】:
试试这个,
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
.
.
.
【讨论】:
谢谢。你能解释一下 new_dfs[key] 是什么意思吗?如果您指定它属于关键部分,python 如何理解这将过滤位于字典值中的数据帧?【参考方案2】:类似:
sells = k: v for (k, v) in list_of_df.items() if v["Sale/Purchase"] == "Sell"
这种模式称为字典理解。根据this question 的说法,这是最快和最 Pythonic 的方法。
您应该提供您正在处理的数据的示例以获得更准确的答案。
【讨论】:
【参考方案3】:你可以映射一个函数:
lambda df: df[df["Sale/Purchase"] == "Sell"]
如何:
语法 = map(fun, iter)
map(lambda df: df[df["Sale/Purchase"] == "Sell"], list_of_dfs)
您可以将其映射到list
或set
对于dict
:
df_dict = k: df[df["Sale/Purchase"]=="Sell"] for k, df in list_of_dfs.items()
【讨论】:
以上是关于Python---循环遍历带有数据框的字典的主要内容,如果未能解决你的问题,请参考以下文章
在python中循环遍历数据框字典并将字典中的每个数据框与单个数据框合并