我有字典d:
d = dict({'foo': ['a', 'b', 'c'], 'bar': ['d', 'e', 'f']})
我如何获得一个看起来像这样的数据框:
+-----+--------+
| Key | Values |
+-----+--------+
| foo | a |
+-----+--------+
| foo | b |
+-----+--------+
| foo | c |
+-----+--------+
| bar | d |
+-----+--------+
| bar | e |
+-----+--------+
| bar | f |
+-----+--------+
这不能回答我的问题: Dictionary with values as lists to pandas dataframe frame
答案 0 :(得分:1)
您可以尝试以下方法:
df = pd.DataFrame(d).stack().sort_values()
df
#Out[2037]:
#0 foo a
#1 foo b
#2 foo c
#0 bar d
#1 bar e
#2 bar f
答案 1 :(得分:1)
在pandas
0.25之后
pd.Series(d).explode().reset_index()
Out[114]:
index 0
0 foo a
1 foo b
2 foo c
3 bar d
4 bar e
5 bar f
答案 2 :(得分:0)
您可以这样做:
import pandas as pd
d = {'foo': ['a', 'b', 'c'], 'bar': ['d', 'e', 'f']}
df = pd.DataFrame([[key, value] for key, values in d.items() for value in values], columns=['keys', 'values'])
print(df)
输出
keys values
0 foo a
1 foo b
2 foo c
3 bar d
4 bar e
5 bar f
您也可以使用explode:
df = pd.DataFrame({'keys': list(d.keys()), 'values': list(d.values())}).explode('values').reset_index(drop=True)
print(df)
输出
keys values
0 foo a
1 foo b
2 foo c
3 bar d
4 bar e
5 bar f