【问题标题】:How do I save python dictionary into a dataframe if the value of dictionary is tuple of tuples如果字典的值是元组的元组,如何将python字典保存到数据框中
【发布时间】:2021-09-01 21:29:34
【问题描述】:
字典结构如下:
{ key1 : ((( ' value1', 'value2'),'value3'),'value4')}.
对于所有值,我希望 value1 在第 1 行(数据框)中,在第 2 行(数据框)中的 value2 类似。
对于这个例子,我需要在数据框中创建 4 行。
【问题讨论】:
标签:
python
list
dataframe
dictionary
tuples
【解决方案1】:
import pandas as pd
dict_1 = {'key1': ((('value1', 'value2'),'value3'),'value4')}
def nested_value_flatter(input_data, rest_value=[]):
if type(input_data[0]) == tuple:
rest_value.append(input_data[-1])
return nested_value_flatter(input_data[0], rest_value)
else:
rest_value.append(input_data[-1])
rest_value.append(input_data[0])
return rest_value[::-1]
new_dict = dict()
for k, v in dict_1.items():
new_dict[k] = nested_value_flatter(v)
new_df = pd.DataFrame(new_dict)
new_df 的打印如下。
key1
0 value1
1 value2
2 value3
3 value4
【解决方案2】:
这是一种方法:
输入字典:
{'key1': (((' value1', 'value2'), 'value3'), 'value4')}
代码:
def flatten(seq):
l = []
for elt in seq:
t = type(elt)
if t is tuple or t is list:
for elt2 in flatten(elt):
l.append(elt2)
else:
l.append(elt)
return l
df['val'] = flatten(t)
print(df)
打印:
val
0 value1
1 value2
2 value3
3 value4