首页 > 解决方案 > 应用(设置)到熊猫数据框中的两列

问题描述

我在数据框中有三列。我想让第二列和第三列有集合而不是列表。使用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}

标签: pythonpandaslistsetapply

解决方案


我认为需要在嵌套列表中定义列,然后applymap使用sets:

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}

推荐阅读