![](/img/trans.png)
[英]How to make a dataframe with one key to multiple list values to a dictionary in python?
[英]Dictionary with multiple key values to dataframe
字典看起来像:
{'iphone': [12, 21666], 'a1': [6, 5859], 'J5': [15, 13862]}
使用此字典,我想创建如下所示的数据框:
name n1 n2
0 iphone 12 21666
1 a1 6 5859
2 J5 15 13862
将列表理解与DataFrame
构造函数一起使用:
d = {'iphone': [12, 21666], 'a1': [6, 5859], 'J5': [15, 13862]}
df = pd.DataFrame([([k] + v) for k, v in d.items()], columns=['name','n1','n2'])
#alternative
#df = pd.DataFrame([(k, *v) for k, v in d.items()], columns=['name','n1','n2'])
print (df)
name n1 n2
0 iphone 12 21666
1 a1 6 5859
2 J5 15 13862
具有所有长度的列表的通用解决方案,不仅2
:
df = pd.DataFrame([(k, *v) for k, v in d.items()])
#python 3.6+ with f-strings
df.columns = ['name'] + [f'n{x}' for x in df.columns[1:]]
#python bellow
#df.columns = ['name'] + ['n{}'.format(x) for x in df.columns[1:]]
print (df)
name n1 n2
0 iphone 12 21666
1 a1 6 5859
2 J5 15 13862
要么:
df = (pd.DataFrame.from_dict(d, orient='index')
.rename(columns=lambda x: x+1)
.add_prefix('n')
.rename_axis('name')
.reset_index())
print (df)
name n1 n2
0 iphone 12 21666
1 a1 6 5859
2 J5 15 13862
如果您的字典名称是d
,也可以执行此操作:
df = pd.DataFrame(d).T.reset_index()
df.columns = ['name','n1','n2']
您可以尝试这样。
df = pd.DataFrame({'iphone': [12, 21666], 'a1': [6, 5859], 'J5': [15, 13862]})
df.columns = ["name", "n1", "n2"]
print(df)
a={'iphone': [12, 21666], 'a1': [6, 5859], 'J5': [15, 13862]}
df = pd.DataFrame(a).T
df.reset_index(inplace=True)
df.columns = ['name','n1','n2']
print(df)
输出:
name n1 n2
0 iphone 12 21666
1 a1 6 5859
2 J5 15 13862
重置索引是没有它的要求步骤,它将以['iphone','a1','J5']作为索引
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.