从datafram中的某些列中获取所有唯一值

2024-04-25 15:29:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于风格和如何正确做事的简单问题。你知道吗

我想获取数据帧中某些列的所有唯一值,并创建一个映射['columnName']->;[valueA,valueB,…]。以下是我的代码:

listUnVals = {}

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

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

任何答复都将不胜感激。你知道吗


Tags: and代码ingtdfforif风格
2条回答

您可以创建不需要的列的列表,然后检查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}

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

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'])]}

相关问题 更多 >