繁体   English   中英

PYTHON (Pandas) 中的最大返回问号

[英]MAX RETURN QUESTION MARK IN PYTHON (PANDAS)

我的代码有问题

            data = pd.read_table('household_power_consumption.txt',sep=';', 
                                  low_memory=False,header=0, index_col=False,
                                  parse_dates=[0])
            df = pd.DataFrame(data, dtype=None)
            col = df["Global_active_power"]
            max_value=col.max()
            print(max_value)

这是数据集的图像 在此处输入图像描述

如您所见, “Global_active_power”列已被数据完全占据。 但是,我的最大值返回一个问号(“?”)

我尝试了几个代码,但值保持不变。 有人可以帮我解决这个问题吗


您可以从https://archive.ics.uci.edu/ml/datasets/individual+household+electric+power+consumption获取数据

可能并非Global_active_power列中的所有行都由数值填充。 可能该行中的最新值缺少值并且填充的是“?”。 因为整个列不是数字,并且max()返回该行的最新值。

检查示例:

df = pd.DataFrame({"x": [1,2,3], "y": ["32.32", "?","fef"], "z": ["32.32", "456", "?"]})

df

# output
   x      y      z
0  1  32.32  32.32
1  2      ?    456
2  3    fef      ?


df.x.max()

# output
3

df.y.max()

# output
'fef'

df.z.max()

# output
'?'

如果列不是数字数据类型,则max()始终返回列中的最新值。

导入时列中的数据是str类型——因此.max()在您想要的意义上没有意义。 看起来数据是浮动类型的,所以你需要把它转换成float64类型,但首先替换所有的? 带有NaN值(因此类型转换不会失败)。 也就是说,尝试:

col = df['Global_active_power'].apply(lambda x: x if x != '?' else 'NaN')
                               .astype('float64')

工作示例:

import pandas as pd

data = pd.read_table('household_power_consumption.txt',\
                     sep=';',low_memory=False,\
                     header=0, index_col=False,parse_dates=[0])

df = pd.DataFrame(data,dtype=None)
col = df['Global_active_power'].apply(lambda x: x if x != '?' else 'NaN')\
                               .astype('float64')
print(col.max())

>>> 11.122

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM