Добавление серии Pandas в виде строки в DataFrame, игнорирование несоответствующих столбцов - PullRequest
1 голос
/ 27 марта 2019

Допустим, у меня есть следующий DataPrame Pandas, в котором еще нет строк:

'Jeep' | 'Volvo' | 'Honda'
--------------------------

У меня есть следующие серии панд:

Honda    5
Nissan   3
Jeep     7
Toyota   2

Я хочу добавить эту серию в виде строки (не включая элементы, которые не соответствуют имени столбца)

Результат:

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

Возможно ли это сделать?

Ответы [ 3 ]

2 голосов
/ 27 марта 2019
import pandas as pd
df = pd.DataFrame(columns=['Jeep', 'Volvo', 'Honda'])  
s = pd.Series({"Honda": 5, "Nissan": 3, "Jeep": 7, "Toyota": 2})  

df.append(s[df.columns], ignore_index=True).fillna(0)
1 голос
/ 27 марта 2019

Вы можете использовать reindex несколькими способами, описанными ниже.

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
1 голос
/ 27 марта 2019

Вы можете использовать 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
>>> 
...