在熊猫中进行行循环

问题描述 投票:0回答:1

我的数据框架的第一列ID如下。

ID
A123
A234
A456
A123
A234

现在我需要创建一个新的列指示器 在每个重复的ID前面添加一个指示器。

希望的输出。

ID     Indicator
A123    1
A234    1
A456    0
A123    1
A234    1
python-3.x pandas
1个回答
0
投票

在Pandas中,一旦你掌握了它的窍门,这是一个非常简单的操作,所以你可能需要在教程中投入一些时间。你需要做的是调用方便的函数--------------。duplicated()ID 列,一个 pandas.core.series.Series. 所以..:

import pandas as pd
df = pd.DataFrame(["A123", "A234", "A456", "A123", "A234"], columns=["ID"])
df.ID.duplicated()

0    False
1    False
2    False
3     True
4     True
Name: ID, dtype: bool

它返回一个 Series 与布尔值。你可以把新的 Series并称其 apply 函数,然后返回一个 Series 值,并使用返回的 apply. 因此,要把每个布尔值变成0或1,你需要做的就是应用 int:

df.ID.duplicated().apply(int) // or df["ID"].duplicated().apply(int)

0    0
1    0
2    0
3    1
4    1
Name: ID, dtype: int64

有很多其他公约功能 Series. 如果你需要做一些更复杂的事情,你可以 apply() 自定义函数,例如

def custom_function(value):
    return str(int(value))

df.ID.duplicated().apply(custom_function)

0    0
1    0
2    0
3    1
4    1
Name: ID, dtype: object

您也可以使用 apply()DataFrame 本身来调用所有行或列的函数,使用 axis.

© www.soinside.com 2019 - 2024. All rights reserved.