【问题标题】:How can I iterate over all columns in a Dataframe如何遍历数据框中的所有列
【发布时间】:2022-09-24 22:04:49
【问题描述】:

我对 python 很陌生,我只是想要一些指导。

我想知道如何迭代数据框每一列的每个值以应用我自己创建的函数。首先我需要检查它是否是数字,如果是,那么我可以继续我的功能。

我应该先把每一列都做成列表吗?如果是这样,最好的方法是什么?

  • 在 pandas 中,它们很少使用一个单元格,通常使用列,因为通常它们的数量少于行。了解 pandas 的功能,它们几乎适用于所有场合。 pandas.pydata.org/docs/user_guide/index.html
  • 使用.apply() 方法...

标签: python pandas dataframe


【解决方案1】:

你可以看看这个文档页面,它解释了函数pandas.Dataframe.apply的使用:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html 基本上,你给它一个函数func 和一个轴(0 代表列,` 代表行)。

【讨论】:

  • 如何使用 for 循环确保每列只有数值
【解决方案2】:

您可能不想为此使用循环,而是返回一个包含每列信息 OnlyNumeric/NotOnlyNumeric 的 Series。

您使用 pd.to_numeric 并强制错误如下:

import pandas as pd

df = pd.DataFrame({'col': [1, 2, 10, np.nan, 'a'],
                   'col2': ['a', 10, 30, 40, 50],
                   'col3': [1, 2, 3, 4, 5.0]})

df.apply(lambda col: pd.to_numeric(col, errors='coerce').notnull().all())

输出:

col     False
col2    False
col3     True
dtype: bool

然后,您可以再次使用 .all() 来获得单个 True 或 False 并继续应用您的函数。

单线:

df.apply(lambda col: pd.to_numeric(col, errors='coerce').notnull().all()).all()

【讨论】:

    猜你喜欢
    • 2020-01-19
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多