【问题标题】:Pandas - Create dataframe with only one row from dictionary containing listsPandas - 从包含列表的字典中创建只有一行的数据框
【发布时间】:2018-10-16 01:58:59
【问题描述】:

我有这本词典:

d = {'val_1': [1,2,3,4,5], 'val_2': 4}

我想用它创建一个只有一行的 pandas DataFrame。

当我这样做时:

import pandas as pd
df = pd.DataFrame(d)
print(df)

我得到 5 行:

    val_1   val_2
0   1       4
1   2       4
2   3       4
3   4       4
4   5       4

但是,当我将它附加到现有数据框时,我得到了我想要的行为。

import pandas as pd
df = pd.DataFrame(d)
df = df.append(d, ignore_index=True)
print(df)

    val_1           val_2
0   1               4
1   2               4
2   3               4
3   4               4
4   5               4
5   [1, 2, 3, 4, 5] 4

如何从 dict 创建数据框,并且只获取一行,如 append 的情况?

    val_1             val_2
0   [1, 2, 3, 4, 5]   4

【问题讨论】:

    标签: python pandas dataframe dictionary


    【解决方案1】:

    将值包装在一个列表中:

    pd.DataFrame({k: [v] for k, v in d.items()})
    #             val_1   val_2
    #0  [1, 2, 3, 4, 5]       4
    

    【讨论】:

      【解决方案2】:

      您可以改为以pd.Series 开头:

      pd.Series(d).to_frame().T
      
                   val_1 val_2
      0  [1, 2, 3, 4, 5]     4
      

      【讨论】:

        【解决方案3】:

        你可以使用

        df=pd.DataFrame(columns=d.keys())
        df.append(d, ignore_index=True)
        Out[26]: 
                     val_1 val_2
        0  [1, 2, 3, 4, 5]     4
        

        【讨论】:

        • 这会在我运行它时返回TypeError: object of type 'int' has no len()...有什么想法吗?
        • @cᴏʟᴅsᴘᴇᴇᴅ 让我检查一下,它在我这边工作正常......有线
        • 如果有帮助,我正在使用 IPython 6.2.1 运行 python3.6。 d与问题相同
        • @cᴏʟᴅsᴘᴇᴇᴅ 刚刚发生了一些有趣的事情,我无法重现这个问题,相信我,当我运行它时,它可以工作,现在它不再工作了..
        • 奇怪,我认为您的d 以前可能有所不同。无论如何,它现在运行良好。
        【解决方案4】:

        您可以使用from_dict,但列的顺序可以互换:

        In[151]: pd.DataFrame.from_dict(d,orient='index').T
        Out[151]: 
          val_2            val_1
        0     4  [1, 2, 3, 4, 5]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-05-10
          • 2021-12-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-12
          • 2017-07-05
          相关资源
          最近更新 更多