【问题标题】:Add a series to existing DataFrame将系列添加到现有 DataFrame
【发布时间】:2017-05-24 10:43:06
【问题描述】:

我创建了以下 DataFrame:

purchase_1 = pd.Series({'Name': 'Chris',
                        'Item Purchased': 'Dog Food',
                        'Cost': 22.50})
purchase_2 = pd.Series({'Name': 'Kevyn',
                        'Item Purchased': 'Kitty Litter',
                        'Cost': 2.50})
purchase_3 = pd.Series({'Name': 'Vinod',
                        'Item Purchased': 'Bird Seed',
                        'Cost': 5.00})

df = pd.DataFrame([purchase_1, purchase_2, purchase_3], index=['Store 1', 'Store 1', 'Store 2'])

然后我添加了以下列:

df['Location'] = df.index
df

然后如何将以下系列添加到我的 DataFrame?谢谢。

s = pd.Series({'Name':'Kevyn', 'Item Purchased': 'Kitty Food', 'Cost': 3.00, 'Location': 'Store 2'})

【问题讨论】:

    标签: pandas


    【解决方案1】:

    使用concat + to_frame + T

    df = pd.concat([df, s.to_frame().T])
    print (df)
             Cost Item Purchased Location   Name
    Store 1  22.5       Dog Food  Store 1  Chris
    Store 1   2.5   Kitty Litter  Store 1  Kevyn
    Store 2     5      Bird Seed  Store 2  Vinod
    0           3     Kitty Food  Store 2  Kevyn
    

    对于默认索引也可以添加参数ignore_index=True:

    df = pd.concat([df, s.to_frame().T], ignore_index=True)
    print (df)
       Cost Item Purchased Location   Name
    0  22.5       Dog Food  Store 1  Chris
    1   2.5   Kitty Litter  Store 1  Kevyn
    2     5      Bird Seed  Store 2  Vinod
    3     3     Kitty Food  Store 2  Kevyn
    

    或者用loc添加一些不在原始df中的新索引值:

    df.loc[0] = s
    print (df)
             Cost Item Purchased   Name Location
    Store 1  22.5       Dog Food  Chris  Store 1
    Store 1   2.5   Kitty Litter  Kevyn  Store 1
    Store 2   5.0      Bird Seed  Vinod  Store 2
    0         3.0     Kitty Food  Kevyn  Store 2
    

    因为 else 值被Series 覆盖:

    df.loc['Store 2'] = s
    print (df)
             Cost Item Purchased   Name Location
    Store 1  22.5       Dog Food  Chris  Store 1
    Store 1   2.5   Kitty Litter  Kevyn  Store 1
    Store 2   3.0     Kitty Food  Kevyn  Store 2 <- overwritten row
    

    【讨论】:

      【解决方案2】:

      希望对你有帮助,给你准确的结果,

      purchase_4 = pd.Series({'Name': 'Kevyn', 
                              'Item Purchased': 'Kitty Food', 
                              'Cost': 3.00,
                             'Location': 'Store 2'})
      df2 = df.append(purchase_4, ignore_index=True)
      df2.set_index(['Location', 'Name'])
      

      【讨论】:

        【解决方案3】:

        直接从您的问题来源解决。

        df = df.set_index([df.index, 'Name'])
        df.index.names = ['Location', 'Name']
        df = df.append(pd.Series(data={'Cost': 3.00, 'Item Purchased': 'Kitty Food'}, name=('Store 2', 'Kevyn')))
        df
        

        【讨论】:

          猜你喜欢
          • 2020-03-16
          • 2023-04-06
          • 1970-01-01
          • 2022-11-16
          • 2017-01-21
          • 2018-03-06
          • 2020-03-04
          • 2021-03-10
          • 2015-08-27
          相关资源
          最近更新 更多