Как выбрать наименьшее число в одной строке в Python? - PullRequest
1 голос
/ 09 апреля 2019

У меня есть данные с несколькими числами в каждой строке, например:

gene    numbers
P53     11 11 11 7 13 8 8
ACE     6 5 4 5 3
BRCA    2 2 1

Я хочу, чтобы столбец чисел содержал только наименьшее число в этой строке, например, с выводом:

gene    numbers
P53     8
ACE     3
BRCA    1

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

data = pd.read_csv('data.csv', header=0)
data = data.drop(["gene"],1)
df = pd.DataFrame(data)
matrix = df.as_matrix()
result1 = list(map(min, matrix))
result2 = list(map(min, zip(*matrix)))

Однако это дает ошибку, которая:

TypeError: '<' not supported between instances of 'float' and 'str'

Любая помощь / руководство будет оценено.

1 Ответ

3 голосов
/ 09 апреля 2019

Если есть только столбец numbers, заполненный числами, разделенными сначала пробелами split, затем преобразуйте в целые числа и получите min:

df['numbers'] = df['numbers'].apply(lambda x: min(map(int, x.split())))
print (df)
   gene  numbers
0   P53        7
1   ACE        3
2  BRCA        1

Другое решение:

df['numbers'] = df['numbers'].str.split(expand=True).astype(float).min(axis=1).astype(int)
print (df)
   gene  numbers
0   P53        7
1   ACE        3
2  BRCA        1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...