【问题标题】:Python: append dictionary to pandas data frame rowPython:将字典附加到熊猫数据框行
【发布时间】:2022-01-06 04:14:24
【问题描述】:

我有一本如下形式的字典:

{'2018': 21.6, '2019': 29.0, '2020': 134.8}

和以下形式的熊猫数据框

Index Column1 Column2
Index1 Name1 URL1
Index2 Name2 URL2
Index3 Name3 URL3

我现在的目标是将字典附加到一个固定的行,比如带有 Index2 的行。结果数据框应该是:

Index Column1 Column2 2018 2019 2020
Index1 Name1 URL1
Index2 Name2 URL2 21.6 29.0 134.8
Index3 Name3 URL3

之后,我想将相同形式的第二个和第三个字典附加到 Index: Index1 然后是 Index3 的行中。

用 python 最好的方法是什么?

【问题讨论】:

    标签: python pandas dataframe dictionary append


    【解决方案1】:

    我认为最好首先通过索引和字典创建新的 DataFrame,然后通过 DataFrame.join 添加到原始数据帧:

    d = {'2018': 21.6, '2019': 29.0, '2020': 134.8}
    
    df = df.join(pd.DataFrame([d], index=['Index2']))
    print (df)
           Column1 Column2  2018  2019   2020
    Index1   Name1    URL1   NaN   NaN    NaN
    Index2   Name2    URL2  21.6  29.0  134.8
    Index3   Name3    URL3   NaN   NaN    NaN
    

    或者:

    d = {'2018': 21.6, '2019': 29.0, '2020': 134.8}
    
    df = df.join(pd.DataFrame.from_dict({'Index2': d}, orient='index'))
    print (df)
           Column1 Column2  2018  2019   2020
    Index1   Name1    URL1   NaN   NaN    NaN
    Index2   Name2    URL2  21.6  29.0  134.8
    Index3   Name3    URL3   NaN   NaN    NaN
    

    【讨论】:

      【解决方案2】:

      如果您想以自定义顺序将数据插入数据框中,您可以试试这个:

      import pandas as pd
      df = pd.DataFrame([{'col1': 'Name1', 'col2': 'URL1'},
                         {'col1': 'Name2', 'col2': 'URL2'},
                         {'col1': 'Name3', 'col2': 'URL3'}],
                         index=['Index1','Index2','Index3'])
      
      d2 = {'2018': 21.6, '2019': 29.0, '2020': 134.8}
      d1 = {'2018': 200, '2019': 29.0, '2020': 134.8}
      d3 = {'2018': 500, '2019': 29.0, '2020': 134.8}  
      
      df = df.join(pd.DataFrame([d2,d1,d3], index=['Index2','Index1','Index3']))
      print (df)
      

      输出:

               col1  col2   2018  2019   2020
      Index1  Name1  URL1  200.0  29.0  134.8
      Index2  Name2  URL2   21.6  29.0  134.8
      Index3  Name3  URL3  500.0  29.0  134.8
      

      【讨论】:

        猜你喜欢
        • 2015-10-20
        • 2017-10-12
        • 2020-09-23
        • 2020-07-23
        • 2019-10-22
        • 2018-02-08
        • 2017-06-13
        • 2014-01-03
        • 1970-01-01
        相关资源
        最近更新 更多