我一直在尝试创建一个数据帧字典,以便存储来自不同文件的数据。我在下面的循环中创建了一个dataframe,我希望将它们聚合起来,使每个dataframe都包含在字典中。我得晚些时候加入他们。你知道吗
d = {}
for num in range(3,14):
nodeName = "rgs" + str(num).zfill(2) #The key should be the nodeName
# Bunch of stuff to get the data ...
# Fill dataframe
data = {'date':date_list, 'users':users_list}
df = pd.DataFrame(data)
df = df.convert_objects(convert_numeric=True)
df = df.dropna(subset=['users'])
df['users'] = df['users'].astype(int)
d = {nodeName:df}
print d
我的问题是,如果我从循环中打印字典,我只有一个条目,最后一个条目。你知道吗
{'rgs13': date users
0 2016-01-18 1
1 2016-01-19 1
2 2016-01-20 1
3 2016-01-21 1
4 2016-01-22 1
5 2016-01-23 1
6 2016-01-24 0
但我可以清楚地看到,我可以生成所有的数据帧,而不会在循环中出现问题。我怎样才能使这本词典保留所有的词典?我做错什么了?你知道吗
谢谢你的帮助。你知道吗
而不是
d = {nodeName:df}
使用因为这会将一个键/值对添加到
d
,而d = {nodeName:df}
会将d
重新分配到一个新的dict(只有一个键/值对)。在循环中这样做会导致前面所有的键/值对死亡。你知道吗你可能会发现内德·巴奇尔德的Facts and myths about Python names and values是一本有用的书。它将为您提供思考变量名和值之间关系的正确心理模型,并帮助您了解哪些语句修改值(例如
d[nodeName] = df
)而不是重新分配变量名(例如d = {nodeName:df}
)。你知道吗这是因为最终你在重新定义
d
。你知道吗你想要的是:
相关问题 更多 >
编程相关推荐