我不熟悉Python和StackOverflow。希望我的帖子正确:)
问题:在每个for循环中,我试图创建一个新的数据框,向其中添加列,并用数据填充列
方法:通过阅读以前的文章,我了解到我可以使用“exec”创建新的数据帧,但这不是最佳实践。或者,我可以创建一个dic,然后修改df。也一直在尝试使用嵌入式for循环
问题:实际修改并填写已创建(且为空)的df
代码:
df1 = an existing dataframe with date as its index and profit, tax, and revenue for columns
#tablelist will only have these 4 values
tablelist = ['QTD','YTD','OneYear','Inception']
# Method 1
for table in tablelist:
#this works
exec('{} = pd.DataFrame()'.format(table))
#this doesn't work
table['Value'] = df1[profit] - df1[tax]
---> error: 'str' object does not support item assignment
# Output (without line 4)
type(YTD)
pandas.core.frame.DataFrame
#this works but its outside of the loop so it defeats purpose
YTD['Value'] = df1[profit] - df1[tax]
方法1没有帮助,因为它在循环之外
# Method 2
d = {}
for i in tablelist1:
#this works but I cant figure out how add columns and data
d[i] = pd.DataFrame()
# Output
print(d)
{'QTD': Empty DataFrame
Columns: []
Index: [], 'YTD': Empty DataFrame
Columns: []
Index: [], 'OneYear': Empty DataFrame
Columns: []
Index: [], 'Inception': Empty DataFrame
Columns: []
Index: []}
方法2可以工作,但如何添加列和数据
非常感谢您的建议
第二种方法应该在python中使用。因为定义很清楚。此外,变量的作用域尽可能大。您可以通过查找字典的键轻松查找定义的数据帧。
您可以通过索引添加新列:
第一个方法使用表数组给定的名称创建全局变量。因此,如果您想附加新列。您不会使用table作为dataframe的变量名,而是使用字符串提供的名称。执行官又来了。我不推荐这种方式,因为变量被定义为全局变量,而且它们的定义方式非常隐蔽。见下文:
相关问题 更多 >
编程相关推荐