Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有条件地在表中的列上迭代_Python_Pandas - Fatal编程技术网

Python 有条件地在表中的列上迭代

Python 有条件地在表中的列上迭代,python,pandas,Python,Pandas,我有一个Pandas dataframe,我想为它返回每列中唯一值的数量,但有些列应该被排除在外 这就是我习惯于在列中选择唯一值的方式,但我不确定如何迭代它: pd.unique(df.column_name.ravel()) 我的想法是这样的,但它显然是无效的 col_names = list(df.columns.values) dont_include = ['foo', 'bar'] cols_to_include = [x for x in col_names if x not in

我有一个Pandas dataframe,我想为它返回每列中唯一值的数量,但有些列应该被排除在外

这就是我习惯于在列中选择唯一值的方式,但我不确定如何迭代它:

pd.unique(df.column_name.ravel())
我的想法是这样的,但它显然是无效的

col_names = list(df.columns.values)
dont_include = ['foo', 'bar']
cols_to_include = [x for x in col_names if x not in dont_include]
for i in cols_to_include:
 col_unique_count = len(pd.unique(df.i.ravel())

最佳解决方案是什么?

代码可以简化为:

cols_to_include = df.columns[~df.columns.str.contains('foo')]
for col in cols_to_include:
  col_unique_count = df[col].nunique()
可以调用以获取给定序列的唯一值计数

或:

在这里,
apply
将对每列调用
nunique

编辑

用于测试成员身份,并使用
~
否定布尔掩码:

In [47]:
df = pd.DataFrame(columns = ['foo','baz','bar','pie'])
df

Out[47]:
Empty DataFrame
Columns: [foo, baz, bar, pie]
Index: []

In [48]:
dont_include = ['foo', 'bar']
cols = df.columns[~df.columns.isin(dont_include)]
cols

Out[48]:
Index(['baz', 'pie'], dtype='object')
然后,您可以像以前一样使用我的代码来迭代df的子选择

In [47]:
df = pd.DataFrame(columns = ['foo','baz','bar','pie'])
df

Out[47]:
Empty DataFrame
Columns: [foo, baz, bar, pie]
Index: []

In [48]:
dont_include = ['foo', 'bar']
cols = df.columns[~df.columns.isin(dont_include)]
cols

Out[48]:
Index(['baz', 'pie'], dtype='object')