【发布时间】:2020-04-10 14:03:08
【问题描述】:
我有一个循环,它采用一系列现有数据帧并操纵它们的格式和值。我需要知道如何在循环结束时创建包含修改内容的新数据框。
示例如下:
import pandas as pd
# Create datasets
First = {'GDP':[200,175,150,100]}
Second = {'GDP':[550,200,235,50]}
# Create old_dataframes
old_df_1 = pd.DataFrame(First)
old_df_2 = pd.DataFrame(Second)
# Define references and dictionary
old_dfs = [old_df_1, old_df_2]
new_dfs = ['new_df_1','new_df_2']
dictionary = {}
# Begin Loop
for df, name in zip(old_dfs, new_dfs):
# Multiply all GDP values by 1.5 in both dataframes
df = df * 1.5
# ISSUE HERE - Supposed to Create new data frames 'new_df_1' & 'new_df_2' containing df*1.5 values: Only appends to dictionary. Does not create new_df_1 & new_df_2
dictionary[name] = df
# Check for the existance of 'new_df_1 & new_df_2' (They will not appear)
%who_ls DataFrame
问题:我已在上面标记了问题。我的代码不会创建“new_df_1”和“new_df_2”数据框。它只是将它们附加到字典中。我需要能够创建 new_df_1 和 new_df_2 作为单独的数据框。
【问题讨论】:
-
你能给出你的输入和预期输出的样本吗?这样,当循环说完后,在
dfs中看到你需要什么会更清楚 -
感谢您对我的问题坚持不懈。我刚刚创建了一个示例供您学习。我希望很清楚。如果运行正确,最终命令 %who_ls DataFrame 应该返回 ['df', 'old_df_1', 'old_df_2','new_df_1','new_df_2']
-
您发布的循环代码有什么问题?
-
我的代码的问题是我的代码没有创建 'new_df_1' 和 'new_df_2' 作为数据框。行 dictionary[name] = df 只是将它们完全附加到字典中。我不知道如何在循环中创建 dfs。如果您运行我的代码并使用 %who_ls_DataFrame 检查新的数据帧,您将找不到 'new_df_1 & new_df_2
-
使用数据框字典有什么问题?实际上,这是首选的方法,而不是用 许多 数据帧淹没您的全局环境,而是使用 一个 索引数据帧容器。如果数据框存储在 dict、list、tuple 等中,则不会丢失任何功能。