Python字典(/w值是不同长度的列表)到数据帧
我有一本这样的字典。这些值是不同长度的列表Python字典(/w值是不同长度的列表)到数据帧,python,pandas,Python,Pandas,我有一本这样的字典。这些值是不同长度的列表 {'New England': ['connecticut', 'maine', 'massachusetts', 'new hampshire', 'rhode island', 'vermont'], 'Mideast': ['delaware', 'district of columbia', 'maryland', 'new jersey', 'new york', 'pennsylvania'],
{'New England': ['connecticut',
'maine',
'massachusetts',
'new hampshire',
'rhode island',
'vermont'],
'Mideast': ['delaware',
'district of columbia',
'maryland',
'new jersey',
'new york',
'pennsylvania'],
'Great Lakes': ['illinois', 'indiana', 'michigan', 'ohio', 'wisconsin'],
'Plains': ['iowa',
'kansas',
'minnesota',
'missouri',
'nebraska',
'north dakota',
'south dakota'],
'Southeast': ['alabama',
'arkansas',
'florida',
'georgia',
'kentucky',
'louisiana',
'mississippi',
'north carolina',
'south carolina',
'tennessee',
'virginia',
'west virginia'],
'Southwest': ['arizona', 'new mexico', 'oklahoma', 'texas'],
'Rocky Mountain': ['colorado', 'idaho', 'montana', 'utah', 'wyoming'],
'Far West': ['alaska',
'california',
'hawaii',
'nevada',
'oregon',
'washington']}
我想把它做成一个有两列的熊猫数据框,如下所示
+-------------+--------------+
|region | state |
+-------------|--------------+
|New England | connecticut |
+-------------|--------------+
|New England | maine |
+-------------|--------------+
|New England | massachusetts|
+-------------|--------------+
|New England | new hampshire|
+-------------|--------------+
| Mideast | new york |
+-------------|--------------+
| Mideast | new jersey |
+-------------|--------------+
我怎样才能做到呢
我有一列美国州,我想把它们分类为区域,所以我需要一个数据框架来合并
非常感谢 使用
列表理解
将传递给DataFrame
构造函数的元组列表的键中列表的值展平:
df = pd.DataFrame([(k, x) for k, v in d.items() for x in v],
columns=['region','state'])
print (df.head(10))
region state
0 New England connecticut
1 New England maine
2 New England massachusetts
3 New England new hampshire
4 New England rhode island
5 New England vermont
6 Mideast delaware
7 Mideast district of columbia
8 Mideast maryland
9 Mideast new jersey
编辑:循环解决方案:
out = []
for k, v in d.items():
for x in v:
out.append((k, x))
df = pd.DataFrame(out, columns=['region','state'])
完美的谢谢你能把列表理解转换成for循环,这样我就能更好地理解了吗?@tainangao-当然,给我一点时间