向现有DataFrame添加系列

mar*_*shp 5 pandas

我创建了以下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'])
Run Code Online (Sandbox Code Playgroud)

然后,我添加了以下列:

df['Location'] = df.index
df
Run Code Online (Sandbox Code Playgroud)

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

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

jez*_*ael 5

使用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
Run Code Online (Sandbox Code Playgroud)

同样对于默认索引,可能添加参数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
Run Code Online (Sandbox Code Playgroud)

或者增加一些新的索引值,它是不是在原来dfloc

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
Run Code Online (Sandbox Code Playgroud)

因为其他值会被覆盖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
Run Code Online (Sandbox Code Playgroud)