如何在python中选择一行中最小的数字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python中选择一行中最小的数字?相关的知识,希望对你有一定的参考价值。

我有每行中有多个数字的数据,如下所示:

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'

任何帮助/指导将不胜感激。

答案

如果只有列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

以上是关于如何在python中选择一行中最小的数字?的主要内容,如果未能解决你的问题,请参考以下文章

华为OD机试 - 数组组成的最小数字(Python)

如何在文件处理中从文本文件中找到每一行的最小值和最大值?

根据在 Spinner 中选择的数字,相同的片段应该出现在另一个之下。如何?

如何在每行数字中找到最小的数字?不使用 min()

处理CSV数据时如何忽略第一行数据?

处理CSV数据时如何忽略第一行数据?