分解列表字典以获取列表中每个值的键排列



我如何从这样的字典中获取:

j = {'BRAA': ['AEN-1', 'AMC-1', 'APL-1C'], 'BRAB': ['BRVO-1', 'CNBC-1']}

对于像这样的熊猫数据帧:

df = pd.DataFrame({"Unit": ["BRAA", "BRAA", "BRAA", "BRAB", "BRAB"], "Network": ["AEN-1", "AMC-1", "APL-1C", 'BRVO-1', 'CNBC-1']})

Unit Network
0  BRAA   AEN-1
1  BRAA   AMC-1
2  BRAA  APL-1C
3  BRAB  BRVO-1
4  BRAB  CNBC-1
​
j = {'BRAA': ['AEN-1', 'AMC-1', 'APL-1C'], 'BRAB': ['BRVO-1', 'CNBC-1']}
df = pd.DataFrame([{'Unit': k, 'Network': i} for k, v in j.items() for i in v])
print(df)

指纹:

Unit Network
0  BRAA   AEN-1
1  BRAA   AMC-1
2  BRAA  APL-1C
3  BRAB  BRVO-1
4  BRAB  CNBC-1

您可以使用pd.DataFrame.from_dict设置orient='index'构建数据框,并melt

(pd.DataFrame.from_dict(j, orient='index').T
.melt(var_name='Unit', value_name='Network')
.dropna())
Unit Network
0  BRAA   AEN-1
1  BRAA   AMC-1
2  BRAA  APL-1C
3  BRAB  BRVO-1
4  BRAB  CNBC-1

您可以使用其他字典。

j = {'BRAA': ['AEN-1', 'AMC-1', 'APL-1C'], 'BRAB': ['BRVO-1', 'CNBC-1']}
dict = {"Unit":[], "Network":[]}
for key, val in j.items():
for v in val:
dict["Unit"].append(key)
dict["Network"].append(v)
df = pd.DataFrame([dict])
print(df)

最新更新