【问题标题】:How to write a conditional array operation on a Pandas DataFrame如何在 Pandas DataFrame 上编写条件数组操作
【发布时间】:2015-09-18 23:53:07
【问题描述】:

假设我有一个 DataFrame,其中一列(我们将其称为“power”)保存从 1 到 10000 的整数值。我想生成一个 numpy 数组,该数组对于每一行都有一个值表示DataFrame对应行的'power'列是否有大于9000的值。

我可以这样做:

def categorize(frame):
    return np.array(frame['power']>9000)

这会给我一个布尔数组,可以用 True 和 False 进行测试。但是,假设我希望数组的内容为 1 和 -1,而不是 True 和 False。如何在不必遍历框架中的每一行的情况下完成此操作?

作为背景,该应用程序正在使用 scikit-learn 通过机器学习为二进制分类准备数据。

【问题讨论】:

标签: python arrays numpy pandas scikit-learn


【解决方案1】:

您可以将np.where 用于此类内容。

考虑以下几点:

import pandas as pd

df = pd.DataFrame({
    'a': range(20)})
df['even'] = df.a % 2 == 0

所以现在even 是一个布尔列。要以您喜欢的方式创建数组,您可以使用

np.where(df.even, 1, -1)

如果愿意,您可以将其分配回 DataFrame:

df['foo'] = np.where(df.even, 1, -1)

请参阅pandas cookbook 进一步了解此类内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-26
    • 2020-04-26
    • 2022-12-22
    • 2022-01-22
    • 2017-09-06
    • 2020-12-08
    • 2020-11-29
    • 2015-09-25
    相关资源
    最近更新 更多