Сформировать одну строку из всех строк с соответствующими значениями в pandas - PullRequest
1 голос
/ 03 марта 2020

У меня есть фрейм данных следующим образом:

    2017            2018
    A     B    C    A    B    C
0   12    NaN  NaN  98   NaN  NaN 
1   NaN   23   NaN  NaN  65   NaN
2   NaN   NaN  45   NaN  NaN  43

Я хочу преобразовать этот фрейм данных в:

    2017            2018
    A     B    C    A    B    C
0   12    23   45   98   65  43 

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Сначала заполняем пропущенные значения, а затем выбираем первую строку двойным [] для одной строки DataFrame:

df = df.bfill().iloc[[0]]
#alternative
#df = df.ffill().iloc[-1]]
print (df)
   2017              2018            
      A     B     C     A     B     C
0  12.0  23.0  45.0  98.0  65.0  43.0
0 голосов
/ 03 марта 2020

Можно суммировать по столбцам:

import pandas as pd
import numpy as np

# Create DataFrame:
tmp = np.hstack((np.diag([12., 23., 42.]), np.diag([98., 65., 43.])))
tmp[tmp == 0] = np.NaN
df = pd.DataFrame(tmp, )

# Sum:
df2 = pd.DataFrame(df.sum(axis=0)).T

В результате:

      0     1     2     3     4     5
0  12.0  23.0  42.0  98.0  65.0  43.0

Это удобно, потому что Dataframe.sum по умолчанию игнорирует NaN , Пара замечаний:

  • При таком подходе имена столбцов теряются.
  • Все- NaN столбцы возвращают 0 в результате.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...