获取pandas数据帧中某些列的所有唯一值

时间:2017-09-13 08:03:59

标签: python pandas

我对风格以及如何正确地做某事有一个简单的问题。

我想在pandas数据框中获取某些列的所有唯一值,并创建一个地图[' columnName'] - > [值a,VALUEB,...]。这是我的代码:

listUnVals = {}

for col in df: 
    if ((col != 'colA') and (col != 'colB')):
        listUnVals[col] = (df[col].unique()) 

我想排除一些像colA和colB这样的列。有没有更好的方法来过滤掉我不想要的列,除了写一个if((!=)和(!= ...)。我希望创建一个lambda表达式来过滤这个值,但我可以& #39; t正确创建。

任何答案都将不胜感激。

2 个答案:

答案 0 :(得分:2)

删除不需要的列的几种方法

a
b, c

或者,

df.columns[~df.columns.isin(['colA', 'colB'])]

并且,你可以忽略循环

df.columns.difference(['colA', 'colB'])

答案 1 :(得分:1)

您可以创建不需要的列列表,然后检查in状态

>>> unwanted = ['columnA' , 'columnB']
>>> for col in df:
        if col not in unwanted:
            listUnVals[col] = (df[col].unique()) 

或者使用dict理解:

{col : df[col].unique() for col in df if col not in unwanted}