编写一个函数,该函数返回并打印列中所有值中的最大值

约尔·扎亚克(Yoel Zajac)

我有这张桌子:

使用Jupyter Notebook创建的DataFrame表。

这实际上只是表的一部分。

完整的表实际上是一个.csv文件,通过使用.head()函数,仅显示前五行。

我需要编写一个函数,该函数返回并打印第二列中所有值中的最大值,其标签为“ Gold”。
该函数应该返回一个字符串值。

在写问题之前,我查看了多个资料来源,尝试了多种方法来解决我的问题。

这似乎是一个非常简单的解决方案,但是不幸的是我没有成功找到它。
(此查询可能有几种可选的解决方案...?)

请帮助我,我完全感到困惑。
谢谢!

以下是所有来源:

这是我尝试解决此问题的所有方法,其中一些存在语法错误:

1.a:找出最大值的传统算法,例如C语言:“ for”循环。

def answer_one():

row=1

max_gold = df['Gold'].row  # Setting the initial maximum.

for col in df.columns: 

    if col[:2]=='Gold': # finding the column.    

        # now iterating through all the rows, finding finally the absolute maximum:

        for row in df.itertuples():  # I also tried: for row=2 in df.rows:

            if(df['Gold'].row > max_gold)  # I also tried: if(row.Gold > max_gold)

                 max_gold = df['Gold'].row  #  I also tried: max_gold = row.Gold

return df.max_gold

我在将打印功能合并到上面的代码中遇到问题,因此我单独添加了它:

1.b:

for row in df.itertuples():
    print(row.Gold)         # or: print(max_gold)

1.c:

for col in df.columns: 

if col[:2]=='Gold':

    df[df['Gold'].max()]

2。

def answer_one():

df = pd.DataFrame(columns=['Gold']) # syntax error.

for row in df.itertuples():    # The same as the separated code sction above.
        print(row.Gold)

3。

def answer_one():

print(df[['Gold']][df.Value == df.Value.max()]) # I don't know if "Value" is a key word or not.
  1. def answer_one():
    return df['Gold'].max() # right syntax, wrong result (not the max value). 
    

5,

def answer_one():

s=data.max()

print '%s' % (s['Gold']) # syntax error. 

6.a:

def answer_one():

df.loc[df['Gold'].idxmax()] # right syntax, wrong output (all the column indexes of the table are shown in a column)

6.b:

def answer_one():

df.loc[:,['Gold']]  # or: df.loc['Gold']  

df['Gold'].max()
普乐

很好的第一个问题,我假设您正在Coursera上进行Python for Datascience课程?

正如已经指出的,df['Gold'].max()但是正确的是,如果数据类型错误,它将不会返回预期的结果。所以首先要确保它是一个数字。您可以通过运行检查此结果(df['Gold'].dtype如果输出不是int64该数据集的数据),则可以通过运行它进行更正df.loc[:,'Gold'] = df.loc[:,'Gold'].str.replace(',','').astype(int)df['Gold'].max()然后返回1022。

对于for循环,在这种情况下,您可以遍历Gold系列中的所有值,而不是遍历所有列和所有行。请注意,python使用0索引!因此,如果您将第1行用作起点,则如果最大值位于第一行(row0)中,并且使用[Index]和不是进行索引,则会得到错误的结果.Index因此,for循环可能看起来像这样。

CurrentMax = df['Gold'][0]
for value in df['Gold']:
    if value>CurrentMax:
        CurrentMax = value
print(CurrentMax)

包装功能:

def rowbyrow(df=df):
    CurrentMax = df['Gold'][0]
    for value in df['Gold']:
        if value>CurrentMax:
            CurrentMax = value
    #print(CurrentMax) if you want to print the result when running
    return CurrentMax

关于第3点,我相信你是后低于,它过滤通过金黄金在那里的值等于最大值,当你使用前后两个支架Gold,这将返回一个数据帧,而不仅仅是值:df[['Gold']][df.Gold == df.Gold.max()]一个支架它会返回一个序列:df['Gold'][df.Gold == df.Gold.max()]

关于第5点,如果您使用的是python 3,可能会导致语法错误?在python 3中,您需要使用()afterprint语句,因此以下代码应该起作用:

s=df.max()
print('%s' % (s['Gold']))

关于第6点:a,如果您只想输出特定的列,则需要在过滤条件(用分隔)之后传递该列,,如下所示:

df.loc[df['Gold'].idxmax(),'Gold']

如果要返回几列,可以传递一个列表,例如

df.loc[df['Gold'].idxmax(),['Country','Gold']]

对于点1:c,[:2]将返回前两个字母。因此与四字母词相比总是错误的Gold

一些性能比较:

1.

%%timeit
df.loc[df['Gold'].idxmax(),'Gold']
10000 loops, best of 3: 76.6 µs per loop

2.

%%timeit
s=df.max()
'%s' % (s['Gold'])
1000 loops, best of 3: 733 µs per loop

3.

%%timeit
rowbyrow()
10000 loops, best of 3: 71 µs per loop

4.

%%timeit
df['Gold'].max()
10000 loops, best of 3: 106 µs per loop

令我惊讶的是,该功能rowbyrow()取得了最快的效果。

创建具有10k随机值的序列后,rowbyrow()仍然是最快的。

看这里:

df = pd.DataFrame((np.random.rand(10000, 1)), columns=['Gold']) 

%%timeit  # no. 1
df['Gold'].max()

The slowest run took 10.30 times longer than the fastest.   
10000 loops, best of 3: 127 µs per loop


%%timeit  # no. 2
rowbyrow()

The slowest run took 8.12 times longer than the fastest.   
10000 loops, best of 3: 72.7 µs per loop

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从类中编写一个构造函数,该构造函数返回2个值

Prelude中是否有一个函数将值与应用于该函数的值配对?

C ++-如何编写一个函数,该函数返回实值函数的导数,而不是导数的值

如何在与一个变量中的最大值相对应的所有变量中找到最大值?

Python:为什么函数会返回一个字典,其中所有值都由赋值填充?

根据旁边的列中的最大值返回一个值

在SQL Server中创建一个函数,该函数返回许多用于排序的值

编写一个函数并返回该函数内的所有值以进行枚举

创建一个聚合函数,该函数返回与最大column2值关联的column1值

在一行中查找所有绑定的最大值,如果列包含最大值,则返回true或false

我如何获得一个函数以返回相邻单元格中的值,而不是将其打印在编写该函数的单元格下方?

该函数需要一个二维列表并找到列的最大值

创建一个按条件将行集合的最大值分配给该组中所有行的列

承诺`then`,该函数不返回任何值,而函数返回另一个诺言

是否有一个函数返回最小值和最大值之间的整数?

最大值:定义一个函数,该函数返回某个范围内的随机整数,以使该值不同于另一个值或其他值列表

编写一个称为键的函数,该函数接受一个对象并返回该对象中所有键的数组

编写一个xslt函数,该函数仅在值是布尔值时才更改xml节点的值

编写一个返回数组中所有回文数总和的函数

编写一个名为containsLetter的函数,该函数标识列表中包含指定字母的所有字符串,并返回这些字符串的列表

编写一个递归函数,该函数返回具有最长连续序列的数字

尝试实现一个函数,该函数从python的链表中删除所有出现的值

编写一个函数,该函数接受对象数组以及具有属性和值的对象

编写一个函数,计算正数和偶数整数列表中所有值的总和

我如何定义一个使用 Python 读取并返回列表中所有值的函数?

如何在python中编写一个函数,给定一个项列表和一个导数的值x,该函数返回该点的导数值

编写一个函数,该函数接受一棵树并返回沿树中任何路径的值的最大总和

如果所有列都满足条件,则返回一个值的 Excel 函数

如何编写一个函数,返回 T-SQL 中具有最大绝对值的数字之和