我试图创建一个字典的字典,其中最重要的数据是一个由每个字典的键过滤的PandasDataFrame。因此,dict1_key [dict2_key] ['df ']=一个DataFrame,其中column1 == dict1_key和column2 == dict2_key。在现实生活中,我的数据更复杂,但这个微不足道的例子说明了我的问题:
import pandas as pd
data = {
'city': ['NY', 'LA', 'NY', 'LA', 'NY'],
'letter': ['A', 'B', 'C', 'A', 'B']
}
letters = {
'A': {'df': None},
'B': {'df': None},
'C': {'df': None}
}
cities = {
'NY': {},
'LA': {}
}
for city, outer_dict in cities.items():
for letter, inner_dict in letters.items():
df = pd.DataFrame(data)
df = df[df['city'] == city]
df = df[df['letter'] == letter]
inner_dict['df'] = df
cities[city][letter] = inner_dict
print(cities['NY']['A'])
- 预期产出:**|城市|字母||-——-|-————-||纽约州|A类|
- 观察到的输出:**|城市|字母||-——-|-————-||洛杉矶|A类|
我似乎想不出如何重新配置它,使城市['NY']['A']正确地打印出纽约的数据,而不是洛杉矶。
1条答案
按热度按时间tzcvj98z1#
如果我理解的话,我想,你做了一些反转,我不确定这是好的。你用两个字典做循环,但我认为,主循环应该用数据完成。你应该只创建一次df变量,并将其用作主迭代器,接收列'city'和'letter'
第二个问题是构造'cities'结构。因此您覆盖了相同的对象。打印所有'cities'结构,使用:
在cities[city][letter] = inner_dict之后执行此打印操作,观察实际更改和覆盖的内容。
我不规则,问题可能是在指针分配。也许指针被分配,但没有可用的数据。
如果我写了什么废话,请纠正我:)