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

2024-03-28 08:02:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我希望numbers列只包含该行中的最小数字,例如输出为:

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'

任何帮助/指导都将不胜感激。你知道吗


Tags: csv数据mapdfdata数字minmatrix
1条回答
网友
1楼 · 发布于 2024-03-28 08:02:47

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

相关问题 更多 >