将元组字典和列表作为键值转换为 pandas 数据框
Converting dictionary of tuples and lists as key values to pandas dataframe
我有一个字典,其中元组作为键,值作为列表。
我想将其转换为 pandas 数据框,以便稍后将其导出为 Excel table。
有人可以建议一个干净的方法来实现如下 table 吗?我想将列表中的元素放在单独的列中。
dict={(a,b):[1,2][4,5],(a,c):[7,8][1,3],(b,c):[1,8][1,3]}
K
X
Y
a,b
1
2
a,b
4
5
a,c
7
8
a,c
1
3
b,c
1
8
b,c
1
3
试过了,没有得到想要的结果:
df=pd.DataFrame.from_dict(dict, orient='index').T
使用:
import pandas as pd
# toy data
dic = {("a", "b"): [[1, 2], [4, 5]], ("a", "c"): [[7, 8], [1, 3]], ("b", "c"): [[1, 8], [1, 3]]}
# un-ravel the data to create the rows of the DataFrame
data = [[key, *value] for key, values in dic.items() for value in values]
# actually create the DataFrame
df = pd.DataFrame(data, columns=["K", "X", "Y"])
print(df)
输出
K X Y
0 (a, b) 1 2
1 (a, b) 4 5
2 (a, c) 7 8
3 (a, c) 1 3
4 (b, c) 1 8
5 (b, c) 1 3
表达式:
data = [[key, *value] for key, values in dic.items() for value in values]
是一个list comprehension,相当于:
data = []
for key, values in dic.items():
for value in values:
data.append([key, *value])
检查这是否有帮助:
import pandas as pd
dict={('a','b'):[[1,2],[4,5]],('a','c'):[[7,8],[1,3]],('b','c'):[[1,8],[1,3]]}
dt = []
for k,v in dict.items():
for ls in v:
dt.append([k,ls[0],ls[1]])
df = pd.DataFrame(dt,columns = ['Key','x','y'])
print (df)
我有一个字典,其中元组作为键,值作为列表。 我想将其转换为 pandas 数据框,以便稍后将其导出为 Excel table。
有人可以建议一个干净的方法来实现如下 table 吗?我想将列表中的元素放在单独的列中。
dict={(a,b):[1,2][4,5],(a,c):[7,8][1,3],(b,c):[1,8][1,3]}
K | X | Y |
---|---|---|
a,b | 1 | 2 |
a,b | 4 | 5 |
a,c | 7 | 8 |
a,c | 1 | 3 |
b,c | 1 | 8 |
b,c | 1 | 3 |
试过了,没有得到想要的结果:
df=pd.DataFrame.from_dict(dict, orient='index').T
使用:
import pandas as pd
# toy data
dic = {("a", "b"): [[1, 2], [4, 5]], ("a", "c"): [[7, 8], [1, 3]], ("b", "c"): [[1, 8], [1, 3]]}
# un-ravel the data to create the rows of the DataFrame
data = [[key, *value] for key, values in dic.items() for value in values]
# actually create the DataFrame
df = pd.DataFrame(data, columns=["K", "X", "Y"])
print(df)
输出
K X Y
0 (a, b) 1 2
1 (a, b) 4 5
2 (a, c) 7 8
3 (a, c) 1 3
4 (b, c) 1 8
5 (b, c) 1 3
表达式:
data = [[key, *value] for key, values in dic.items() for value in values]
是一个list comprehension,相当于:
data = []
for key, values in dic.items():
for value in values:
data.append([key, *value])
检查这是否有帮助:
import pandas as pd
dict={('a','b'):[[1,2],[4,5]],('a','c'):[[7,8],[1,3]],('b','c'):[[1,8],[1,3]]}
dt = []
for k,v in dict.items():
for ls in v:
dt.append([k,ls[0],ls[1]])
df = pd.DataFrame(dt,columns = ['Key','x','y'])
print (df)