2017-09-13 67 views
0

我对样式以及如何正确执行某些操作有个简单的问题。从熊猫数据框的某些列中取出所有唯一值

我想获取熊猫数据框中某些列的所有唯一值并创建一个map ['columnName'] - > [valueA,valueB,...]。这是我的代码是这样的:

listUnVals = {} 

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

我想排除像colA和colB一些列。有没有更好的方法来过滤掉我不想要的列,除非写了一个if((!!)和(!= ...)。我希望创建一个lambda表达式来过滤这个值,但是我不能正确地创建它

任何答复,将不胜感激

+0

类似的东西环路就是我要找 –

回答

1

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

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

或使用字典理解:。

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

夫妇的办法来消除不必要的列

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

或者,

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

而且,你可以忽略与

{c: df[c].unique() for c in df.columns[~df.columns.isin(['colA', 'colB'])]}