【问题标题】:Create a dictionary from pandas empty dataframe with only column names从只有列名的 pandas 空数据框创建字典
【发布时间】:2020-10-26 15:23:51
【问题描述】:

我有一个只有两个列名的 pandas 数据框(单行,也可以视为标题)。我想用它制作一个字典,第一列是值,第二列是键.我已经试过了 to.dict() 方法,但它不起作用,因为它是一个空数据框。

示例 df=|土地 |挪威|到{'土地':挪威}

我可以将 pandas 数据框更改为其他类型并找到解决方法,但这个问题主要是为了学习解决这个问题的最佳/不同/有效方法。

现在我有这个解决方案:

dict(zip(a.iloc[0:0,0:1],a.iloc[0:0,1:2]))

还有其他方法吗?

【问题讨论】:

    标签: python pandas dataframe dictionary data-manipulation


    【解决方案1】:

    这是一种将列转换为列表并将列表转换为字典的简单方法

    def list_to_dict(a):
        it = iter(a)
        ret_dict = dict(zip(it, it))
        return ret_dict
    
    df = pd.DataFrame([], columns=['Land', 'Normway'])
    dict_val = list_to_dict(df.columns.to_list())
    dict_val # {'Land': 'Normway'}
    

    【讨论】:

      【解决方案2】:

      非常手动的解决方案

      df = pd.DataFrame(columns=['Land', 'Norway'])
      
      df = pd.DataFrame({df.columns[0]: df.columns[1]}, index=[0])
      

      如果您有任意数量的列,并且希望每个顺序对都进行这种转换,请尝试:

      df = pd.DataFrame(dict(zip(df.columns[::2], df.columns[1::2])), index=[0])
      

      注意:如果您的 DataFrame 没有至少两列,您将收到错误消息。

      【讨论】:

      • 我想要一个通用的解决方案,我可以在函数中编写一些东西
      • 得到类似这样的错误 ValueError: If using all scalar values, you must pass an index
      • @amarykya_ishtmella 已修复 - 对此感到抱歉
      • 这是有效的,只是我的数据只有一行两列。(这是一个空数据框。''' dict(zip(a.iloc[0:0,0:1], a.iloc[0:0,1:2]))''' 我在用这个
      猜你喜欢
      • 1970-01-01
      • 2017-07-03
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      相关资源
      最近更新 更多