首页 > 解决方案 > 如何从熊猫数据框中选择包含非重复的列

问题描述

我想从 pandas 数据框中选择包含不重复的列,并使用这些列来组成一个子数据框。例如,我有一个这样的数据框:

   x  y  z
a  1  2  3
b  1  2  2
c  1  2  3
d  4  2  3

“x”和“z”列具有非重复值,因此我想将它们挑选出来并创建一个新的数据框,例如:

   x  z
a  1  3
b  1  2
c  1  3
d  4  3

可以通过以下代码实现:

import pandas as pd
df = pd.DataFrame([[1,2,3],[1,2,2],[1,2,3],[4,2,3]],index=['a','b','c','d'],columns=['x','y','z'])
df0 = pd.DataFrame()
for i in range(df.shape[1]):
    if df.iloc[:,i].nunique() > 1:
        df1 = df.iloc[:,i].T
        df0 = pd.concat([df0,df1],axis=1, sort=False)

但是,必须有更简单直接的方法。这些是什么?

最好的祝福

标签: pythonpandas

解决方案


df[df.columns[(df.nunique()!=1).values]]

也许你可以试试这个单线。


推荐阅读