Слияние и вычитание столбцов DataFrame в пандах?

У меня есть pandas DataFrame, что-то вроде:

col1 col2 col3 col5 NaN 1 2 8 2 NaN 4 8 4 NaN 4 8 

Я хочу сделать две вещи:

1) Объединить столбцы 1 и 2:

 newcol1 col3 col5 1 2 8 2 4 8 4 4 8 

Я попытался использовать .concat, но это просто конкатенирует строки. Не похоже, что я могу использовать стандартные + операторы с значениями NaN.

2) Вычитайте столбец 5 из нового столбца 1 и столбца 3, поэтому я получаю:

 newcol1 col3 -7 -6 -6 -4 -4 -4 

Пробовал это так:

 dataframe[['newcol1', 'col2']] - dataframe['col5'] 

а также

 dataframe[['newcol1', 'col2']].subtract(dataframe['col5']) 

но не работает.

3 Solutions collect form web for “Слияние и вычитание столбцов DataFrame в пандах?”

Чтобы получить новый столбец, вы можете использовать fillna (или combine_first ):

 df['newcol1'] = df.col1.fillna(df.col2) 

Затем для вычитания используйте sub и укажите axis=0 так как мы хотим рассматривать индексы строк при сопоставлении меток (а не индексы столбцов, как и по умолчанию):

 >>> df[['newcol1', 'col3']].sub(df['col5'], axis=0) newcol1 col3 0 -7 -6 1 -6 -4 2 -4 -4 

Вот один из подходов.

Вы можете создать newcol1 sum(axis=1)

 In [256]: df['newcol1'] = df[['col1', 'col2']].sum(axis=1) In [257]: df Out[257]: col1 col2 col3 col5 newcol1 0 NaN 1 2 8 1 1 2 NaN 4 8 2 2 4 NaN 4 8 4 

Затем используйте df.sub() на axis=0

 In [258]: df[['newcol1', 'col3']].sub(df['col5'], axis=0) Out[258]: newcol1 col3 0 -7 -6 1 -6 -4 2 -4 -4 
 In [58]: df['newcol'] = df[['col1','col2']].sum(axis=1) - df['col5'] df['col3'] = df['col3'] - df['col5'] df Out[58]: col1 col2 col3 col5 newcol 0 NaN 1 -6 8 -7 1 2 NaN -4 8 -6 2 4 NaN -4 8 -4 

Затем вы можете удалить col1 и col2:

 In [59]: df = df.drop(['col1','col2'],axis=1) df Out[59]: col3 col5 newcol 0 -6 8 -7 1 -4 8 -6 2 -4 8 -4 
  • Логический оператор для булевой индексации в Pandas
  • Pandas DataFrame: заменить все значения в столбце, основываясь на условии
  • возвращает имена столбцов из инструкции pyodbc execute ()
  • pandas: итерация по индексу DataFrame с loc
  • pandas HDFStore - как снова открыть?
  • Объединение множества наборов данных pandas с уникальным индексом
  • Как вводить большие данные в python pandas с использованием циклов или параллельных вычислений?
  • Множественный анализ корреспонденции с нет-двоичными категориальными переменными-пустыми в Python с использованием модулей mca и prince
  • Python - лучший язык программирования в мире.