Слияние и вычитание столбцов 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 
  • Присвоение нескольких значений столбцам pandos pandas DataFrame в одной строке
  • Pandas подсчитывает количество случаев, когда событие произошло за последние n дней по группам
  • Применить функцию к столбцу в dataframe pandas, которая принимает два аргумента
  • picountries: конвертировать названия стран (возможно, неполные!) в CountryCodes
  • Разбивка колонн группами в Пандах
  • ANOVA в python с использованием рамки данных pandas с statsmodels или scipy?
  • Группировать по столбцу из другого (того же числа строк) dataframe
  • Панды не будут заполнять () на месте
  •  
    Interesting Posts for Van-Lav

    Bash: переменная в одиночной кавычке

    добавление существующей строки в txt-файл

    Как сделать взвешенную случайную выборку категорий в python

    Почему список необходим для random.choice

    Как удалить дубликаты столбцов из фреймворка с использованием python pandas

    Как сравнить все элементы в списке с целым числом без использования для цикла

    У кого-нибудь есть хорошие примеры использования мутагена для записи файлов?

    Текст в текстовом виджете как переменная

    Python – Удобный способ проверить значение в списке, который является частью словаря?

    Используя покрытие, как проверить эту строку?

    График торнадо и p10-p90 в питоне (matplotlib)

    Как я могу использовать модуль Perl из Python?

    PyCharm не может найти правильные пути, если я открою каталог, который не является корнем Django

    pyserial последовательный порт чтения в колбе (возможно, используя gevent)

    Как определить pid процесса, запущенного через os.system

    Python - лучший язык программирования в мире.