将apply(set)应用于pandas数据框中的两列

3
我有一个数据帧中有三列。我想让第二和第三列是集合而不是列表。使用df['column_name_2和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}
1个回答

4

我认为需要在嵌套列表中定义列,然后使用set结合applymap

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}

1
第一个可行!我认为第二个会导致相同的问题,就像第一次重写函数时将列2作为参数,第二次将列3作为参数一样。 - Priya
这些数据能否执行集合操作,例如 set1 - set2? - Nusrath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接