从数据框中获取特定列中的重复行

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

我有一个数据框 df:

num_rows = 5
num_cols = 3

data = [
    [10, 20, 30],
    [10, 50, 60],
    [70, 80, 90],
    [20, 30, 10],
    [20, 10, 20]
]

columns = [f"Column_{i+1}" for i in range(num_cols)]

df = spark.createDataFrame(data, columns)

|Column_1|Column_2|Column_3|
+--------+--------+--------+
|      10|      20|      30|
|      10|      50|      60|
|      70|      80|      90|
|      20|      30|      10|
|      20|      10|      20|
+--------+--------+--------+

我想根据第一列创建另一列具有 true/false 的列,其中第一个原始值为“true”,任何重复的值都是“fasle”。所以它看起来像:

|Column_1|Column_2|Column_3|Column_4|
+--------+--------+--------+--------+
|      10|      20|      30|    TRUE|
|      10|      50|      60|   FALSE|
|      70|      80|      90|    TRUE|
|      20|      30|      10|    TRUE|
|      20|      10|      20|   FALSE|
python pandas dataframe pyspark
1个回答
0
投票

只需使用Dataframe.duplicate即可得到结果

import pandas as pd
import numpy as np

def main():
    data = [
        [10, 20, 30],
        [10, 50, 60],
        [70, 80, 90],
        [20, 30, 10],
        [20, 10, 20]
    ]
    df = pd.DataFrame(np.array(data), columns=[f"column_{i}" for i in range(len(data[0]))])

    print(df)
    df["column_4"] = ~df['column_0'].duplicated()
    print(df)

这给出了

   column_0  column_1  column_2
0        10        20        30
1        10        50        60
2        70        80        90
3        20        30        10
4        20        10        20
   column_0  column_1  column_2  column_4
0        10        20        30      True
1        10        50        60     False
2        70        80        90      True
3        20        30        10      True
4        20        10        20     False
© www.soinside.com 2019 - 2024. All rights reserved.