使用pandas dataframe循环最小/最大列值?

时间:2017-08-30 18:47:56

标签: python pandas

如何在pandas数据帧中获得最佳/最大列值?具体来说,我希望获得字符串长度的 min / max值,并根据这些值采取一些操作。

我可以为单个列执行此操作,但我宁愿遍历所有必需的列,而不是完成一次性任务。

这是我的一次性代码,但有必要有更好的方法,IMO:

cols = ['STORE_NO', 'SKU']
    for name in cols:
        inventory_df[name] = inventory_df[name].astype(str)
        long_store = inventory_df.STORE_NO.map(len).max()
        small_store = inventory_df.STORE_NO.map(len).min()
        if long_store == small_store:
            print('Store number values do not appear truncated')
        else:
            print('Some store number values may be truncated')

        long_sku = inventory_df.SKU.map(len).max()
        small_sku = inventory_df.SKU.map(len).min()
        if long_sku == small_sku:
            print('SKU values do not appear truncated')
        else:
            print('Some SKU values may be truncated')     

1 个答案:

答案 0 :(得分:2)

在DataFrame上使用.columns返回所有列的列表。然后,您可以遍历此列表以完成代码示例中的内容。

for name in inventory_df.columns:
    long = inventory_df[name].astype(str).map(len).max()
    small = inventory_df[name].astype(str).map(len).min()
    if long == small:
        print('%s values do not appear truncated' % name)
    else:
        print('Some %s values may be truncated' % name)

如果您不熟悉,%s是字符串格式化方法,可以打印出name中存储的字符串变量。