Панды - объединить два не сложенных кадра данных

1

Я работаю над набором данных, где я откладываю данные и получаю первую и последнюю строки.

>>> print df.iloc[[(0), (-1)]]

     Distance               
Node            0     1     2   
Time                            
0             27.0  54.0  97.0  
60            22.0  49.0  92.0  

то я использую df1 = (df.loc[0] - df.iloc[(-1)]).unstack() чтобы получить разность двух строк

Node            0    1    2    
Distance       5.0  5.0  5.0

И, наконец, я хочу объединить/объединить два набора данных (df и df1).

 >>> print pd.concat([df, df1], axis=1)

               (Distance, 0)  (Distance, 1)  (Distance, 2) 
0                   27.0           54.0           NaN  
60                  22.0           49.0           92.0 
Distance            NaN             NaN            NaN

но я получаю NaN.

Кто-нибудь знает, что я делаю неправильно?

Я хочу, чтобы мой вывод выглядел так

     Distance               
Node            0     1     2   
Time                            
0             27.0  54.0  97.0  
60            22.0  49.0  92.0 
Difference     5.0  5.0   5.0
Теги:
pandas
dataframe

1 ответ

1
Лучший ответ

На мой взгляд, использование unstack не требуется для того, чего вы пытаетесь достичь. Ниже приведены несколько альтернатив. Чтобы упростить форматирование, я пропустил имена индексов и столбцов.

Настроить

df = pd.DataFrame({0: [27.0, 22.0], 1: [54.0, 49.0], 2: [97.0, 92.0]},
                  index=[0, 60])

print(df)

       0     1     2
0   27.0  54.0  97.0
60  22.0  49.0  92.0

pd.DataFrame.loc

Добавьте новую строку по индексу через pd.DataFrame.loc с меткой строки.

df.loc['Distance'] = df.loc[0] - df.iloc[-1]

pd.Series.to_frame + concat

Преобразуйте свою серию разностей в кадр данных, затем транспонируйте и объедините.

diff = (df.loc[0] - df.iloc[-1]).to_frame().T
diff.index = ['Distance']

res = pd.concat([df, diff])

Результат

Результат для обоих методов:

print(res)

             0     1     2
0         27.0  54.0  97.0
60        22.0  49.0  92.0
Distance   5.0   5.0   5.0
  • 0
    У меня второе решение сработало

Ещё вопросы

Сообщество Overcoder
Наверх
Меню