【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 2017-09-17
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 2021-05-24
      • 2016-08-26
      • 2020-04-03
      • 2012-09-02
      相关资源
      最近更新 更多