Pandas对象类型的最大长度为None值

时间:2017-02-16 10:07:45

标签: python pandas dataframe fillna

我编写了一个简短的函数来输出数据框中每列的最大值(或字符串,最大长度),并调整各种数据类型。

def maxDFVals(df):
    for c in df:
        if str(df[c].dtype) in ('datetime64[ns]'):
            print('Max datetime of column {}: {}\n'.format(c,  df[c].max()))
        elif str(df[c].dtype) in ('object', 'string_', 'unicode_'):
            df[c].fillna(value='', inplace=True)
            print('Max length of column {}: {}\n'.format(c, df[c].map(len).max()))
        elif str(df[c].dtype) in ('int64', 'float64'):
            print('Max value of column {}: {}\n'.format(c,  df[c].max()))
        else:
            print('Unknown data type for column {}!\n'.format(c))

它工作正常,但我只想检查是否有更好的替代线6,使用fillna,我需要处理None值。理想情况下,我会忽略None,但我找不到使用skipna = True等方法的方法。

如果我真的想,我想我可以添加

           df[c].replace([''], [None], inplace=True)

在第7行之后返回None值,但这几乎没有人会称之为Pythonic ...

有没有人有更好的建议?

1 个答案:

答案 0 :(得分:1)

试试这个: -

def maxDFVals(df):
    for c in df:
        if str(df[c].dtype) in ('datetime64[ns]'):
            print('Max datetime of column {}: {}\n'.format(c,  df[c].max()))
        elif str(df[c].dtype) in ('object', 'string_', 'unicode_'):
            print('Max length of column {}: {}\n'.format(c, df[c].dropna().map(len).max()))
        elif str(df[c].dtype) in ('int64', 'float64'):
            print('Max value of column {}: {}\n'.format(c,  df[c].max()))
        else:
            print('Unknown data type for column {}!\n'.format(c))