Python 将熊猫系列作为行追加到数据帧中,忽略不匹配的列

Python 将熊猫系列作为行追加到数据帧中,忽略不匹配的列,python,pandas,dataframe,append,series,Python,Pandas,Dataframe,Append,Series,假设我有以下Pandas数据帧,还没有行: 'Jeep' | 'Volvo' | 'Honda' -------------------------- 我有以下熊猫系列: Honda 5 Nissan 3 Jeep 7 Toyota 2 我想将此系列添加为一行(不包括与列名不匹配的元素) 结果: 'Jeep' | 'Volvo' | 'Honda' ---------------------------- 7 | 0 | 5 可以这样做吗?

假设我有以下Pandas数据帧,还没有行:

'Jeep' | 'Volvo' | 'Honda'
--------------------------
我有以下熊猫系列:

Honda    5
Nissan   3
Jeep     7
Toyota   2
我想将此系列添加为一行(不包括与列名不匹配的元素)

结果:

'Jeep' | 'Volvo' | 'Honda'
----------------------------
   7   |    0    |    5

可以这样做吗?

您可以使用
append
来获取特定列:

>>> import pandas as pd
>>> df = pd.DataFrame(columns=['Jeep', 'Volvo', 'Honda'])
>>> s = pd.Series([5, 3, 7, 2],index=['Honda', 'Nissan', 'Jeep', 'Toyota'])
>>> df1 = df.append(s, ignore_index=True)
>>> df1[df.columns].fillna(0)
   Jeep  Volvo  Honda
0   7.0    0.0    5.0
>>> 
该代码实际上是:

>>> df1 = df.append(s, ignore_index=True)
>>> df1[df.columns].fillna(0)
   Jeep  Volvo  Honda
0   7.0    0.0    5.0
>>> 

您可以通过以下几种不同的方式使用
reindex

series.to_frame().T.reindex(df.columns, axis=1, fill_value=0)

   Jeep  Volvo  Honda
0     7      0      5



df=pd.DataFrame();df.append(pd.DataFrame(pd.Series([1,2,3],index=['a','b','c'])).T)
这对您来说可能不太相关,但是
collections.Counter
更优雅地处理添加两个计数器、缺少键等的语义。另外,如果你有一个完整的汽车品牌列表,那么在前面将df初始化为零就更简单了?好主意,只是我的一个小小的调整:-)最轻微的调整,哈哈洛尔,是的:-):p这似乎也添加了“日产”作为一个列。我希望它忽略任何尚未在列中的内容。
series.to_frame().T.reindex(df.columns, axis=1, fill_value=0)

   Jeep  Volvo  Honda
0     7      0      5
series.reindex(df.columns, fill_value=0).to_frame().T

   Jeep  Volvo  Honda
0     7      0      5
df.append(series.reindex(df.columns, fill_value=0).rename(len(df)))

  Jeep Volvo Honda
0    7     0     5