Zoh*_*hid 3 python dictionary multiple-columns dataframe pandas
我正在尝试将数据框转换为字典:
xtest_cat = xtest_cat.T.to_dict().values()
Run Code Online (Sandbox Code Playgroud)
但它发出警告:
警告:DataFrame 列不是唯一的,某些列将被省略 python
我检查了 dataframe(xtest_cat) 的列名:
len(list(xtest_cat.columns.values))
len(set(list(xtest_cat.columns.values)))
Run Code Online (Sandbox Code Playgroud)
他们都是独一无二的。谁能帮我吗 ?
您可以reset_index用于创建unique索引:
xtest_cat = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9]})
xtest_cat.index = [0,1,1]
print (xtest_cat)
A B C
0 1 4 7
1 2 5 8
1 3 6 9
print (xtest_cat.index.is_unique)
False
xtest_cat.reset_index(drop=True, inplace=True)
print (xtest_cat)
A B C
0 1 4 7
1 2 5 8
2 3 6 9
xtest_cat = xtest_cat.T.to_dict().values()
print (xtest_cat)
dict_values([{'B': 4, 'C': 7, 'A': 1}, {'B': 5, 'C': 8, 'A': 2}, {'B': 6, 'C': 9, 'A': 3}])
Run Code Online (Sandbox Code Playgroud)
您还可以省略T和添加参数orient='index':
xtest_cat = xtest_cat.to_dict(orient='index').values()
print (xtest_cat)
dict_values([{'B': 4, 'C': 7, 'A': 1}, {'B': 5, 'C': 8, 'A': 2}, {'B': 6, 'C': 9, 'A': 3}])
Run Code Online (Sandbox Code Playgroud)
orient='record' 更好:
xtest_cat = xtest_cat.to_dict(orient='records')
print (xtest_cat)
[{'B': 4, 'C': 7, 'A': 1}, {'B': 5, 'C': 8, 'A': 2}, {'B': 6, 'C': 9, 'A': 3}]
Run Code Online (Sandbox Code Playgroud)