python: как разбить столбец и добавить максимальный элемент в новый столбец? - PullRequest
0 голосов
/ 02 сентября 2018

Я хочу разделить столбец данных и добавить максимальное значение в новый столбец.

import pandas as pd
import numpy as np
df=pd.DataFrame({'a':['1,2',3,-1,'8,9,1']})

Output:

       a
0    1,2
1      3
2     -1
3  8,9,1

Expected:

       a  maxA
0    1,2     2
1      3     3
2     -1    -1
3  8,9,1     9

Как решить, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 02 сентября 2018
df['maxA'] = df['a'].apply(lambda x:max(str(x).split(',')))

df

       a  maxA
0    1,2     2
1      3     3
2     -1    -1
3  8,9,1     9
0 голосов
/ 02 сентября 2018

Я должен предположить, что вы имеете в виду максимальное целочисленное значение.

  1. У вас есть смешанные типы str и int. Итак, начнем с преобразования всего в строки.
  2. Затем вы найдете максимум строк, разделенных запятыми, используя int в качестве key
  3. Преобразовать в целые числа

df.assign(
    maxA=
    df['a'].astype(str).apply(lambda x: max(x.split(','), key=int)).astype(int)
)

        a  maxA
0     1,2     2
1       3     3
2      -1    -1
3   8,9,1     9
4  21,111   111

Обратите внимание на строку, помеченную 4. 21,111 возвращает максимум 111


Настройка

df=pd.DataFrame({'a':['1,2',3,-1,'8,9,1','21,111']})
0 голосов
/ 02 сентября 2018

Нет панд, просто обычный питон:

>>> foo = [[1,2],[3],[-1],[8,9,1]]
>>> [[x, max(x)] for x in foo]
[[[1, 2], 2], [[3], 3], [[-1], -1], [[8, 9, 1], 9]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...