Панды, соответствующие структуре фрейма данных - PullRequest
3 голосов
/ 09 апреля 2019

У меня есть два фрейма данных, как показано ниже:

d = {'var1': [1, 2, 3, 4], 'var2': [5, 6, 7, 8], 'var3': [9, 10, 11, 12]}
df = pd.DataFrame(data=d)
df
    var1   var2  var3
0     1     5      9
1     2     6      10
2     3     7      11
3     4     8      12

и

d2 = {'var1': [4, 1, 3], 'var2': [5, 7, 7]}
df2 = pd.DataFrame(data=d2)
df2
    var1   var2
0     1     5
1     2     7
2     3     7

Я хочу, чтобы df2 имел те же столбцы и порядок столбцов, что и исходный df

чтобы результаты выглядели так:

df2
    var1   var2  var3
0     1     5     NaN
1     2     7     NaN
2     3     7     NaN

Я знаю, что в этом примере я могу вручную назначить новый столбец с именем 'var3' и установить для него значения NaN, но я ищу общее решение, в котором это необходимо сделать для многих фреймов данных со многими столбцами.

Ответы [ 3 ]

2 голосов
/ 09 апреля 2019

Использование align

df2,_=df2.align(df,axis=1)
df2
Out[190]: 
   var1  var2  var3
0     4     5   NaN
1     1     7   NaN
2     3     7   NaN
2 голосов
/ 09 апреля 2019

Попробуйте использовать reindex:

df2.reindex(df.columns, axis=1)

Выход:

   var1  var2  var3
0     4     5   NaN
1     1     7   NaN
2     3     7   NaN
0 голосов
/ 09 апреля 2019
 for n in (set(df.columns) - set(df2.columns)):
    df2[str(n)] = np.NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...