【问题标题】:apply(set) to two columns in a pandas dataframe应用(设置)到熊猫数据框中的两列
【发布时间】:2019-02-21 08:34:47
【问题描述】:

我在数据框中有三列。我想让第二列和第三列有集合而不是列表。使用 df['column_name_2 and column_name_3'].apply(set) 会导致错误,因为据我了解,此函数将只接受 1 个参数。然而,将它们分成两个独立的函数,完全消除了第三列。

这就是我所拥有的:

    column_1     column_2     column_3
       1         [lk, 18m]    [kjaf]

这就是我想要的:

    column_1     column_2     column_3
       1         {lk, 18m}    {kjaf}

【问题讨论】:

    标签: python pandas list set apply


    【解决方案1】:

    我认为需要在嵌套列表中定义列,然后在 applymapsets 中定义:

    df[['column_2', 'column_3']] = df[['column_2', 'column_3']].applymap(set)
    

    或者使用循环:

    cols = ['column_2', 'column_3']
    for c in cols:
        df[c] = df[c].apply(set)
    

    示例

    df = pd.DataFrame({'column_1': [1, 1], 
                       'column_2': [['lk', '18m'], ['lk', 'r']],
                       'column_3': [['kjaf'], ['ddd']]})
    
    print (df)
       column_1   column_2 column_3
    0         1  [lk, 18m]   [kjaf]
    1         1    [lk, r]    [ddd]
    
    df[['column_2', 'column_3']] = df[['column_2', 'column_3']].applymap(set)
    print (df)
       column_1   column_2 column_3
    0         1  {18m, lk}   {kjaf}
    1         1    {r, lk}    {ddd}
    

    【讨论】:

    • 第一个有效!我假设的第二个会导致与第一次以第 2 列作为参数、第二次以第 3 列作为参数重写函数相同的问题
    • 是否可以对这些数据进行集合操作。像 set1 - set2
    猜你喜欢
    • 2017-06-17
    • 2020-06-03
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多