Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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,我想把变量分成不同的类型。例如: Tweets ID Registration Date num_unique_words photo_profile range object int64 object float64 int64 category 我所做的是: type_dct={str(k):在df.groupby(df.dtypes,axis=1)中为k列出(v)}但是我得到了一个类型

我想把变量分成不同的类型。例如:

Tweets   ID    Registration Date   num_unique_words   photo_profile  range
object  int64  object              float64             int64         category       
我所做的是:

type_dct={str(k):在df.groupby(df.dtypes,axis=1)中为k列出(v)}
但是我得到了一个类型错误:

TypeError: Cannot interpret 'CategoricalDtype(categories=['<5',
 '>=5'], ordered=True)' as a data type
更新: 这比我想象的要复杂得多,但这里有一个使用列表理解的方法:

type_dct = {str(k): list(v) for k, v in df.groupby([i.name for i in df.dtypes], axis=1)}
输出:

{'category': ['range'],
 'int64': ['ID', 'num_unique_words', 'photo_profile'],
 'object': ['Tweets', 'Registration Date']}
pd.CategorialDtypes本身在groupby中无法正常工作,我们必须使用该对象的name属性


使用

来自文档的示例

df = pd.DataFrame({'a': [1, 2] * 3,
                   'b': [True, False] * 3,
                   'c': [1.0, 2.0] * 3})
df
        a      b  c
0       1   True  1.0
1       2  False  2.0
2       1   True  1.0
3       2  False  2.0
4       1   True  1.0
5       2  False  2.0
df.select_dtypes(include='bool')
   b
0  True
1  False
2  True
3  False
4  True
5  False
df.select_dtypes(include=['float64'])
   c
0  1.0
1  2.0
2  1.0
3  2.0
4  1.0
5  2.0
df.select_dtypes(exclude=['int64'])
       b    c
0   True  1.0
1  False  2.0
2   True  1.0
3  False  2.0
4   True  1.0
5  False  2.0

谢谢斯科特·波士顿。如何在单独的列表中添加此信息?我需要将对象类型、布尔值和数值变量考虑为三个不同的列表,如果possible@Val,您是否会在这个问题中包含生成数据帧的代码,这样我就可以准确地向您展示如何根据列的数据类型来分隔给定的数据帧。请参阅更新的问题。非常感谢你。如果您需要更多信息,请告诉我谢谢@Arne。我没有注意到这个错误。感谢您的修复:)奇怪的是您没有收到错误。我仍然有那个错误。不幸的是,我不知道是什么导致了这个错误。该列中没有空值。我猜您在分配
df
type\u dct
之间做了一些事情,如上所示。您是否专门将
range
转换为
pd.CategoricalDtype
?如果你做了类似的事情,那么看到代码的这一部分也会有所帮助。不,事实上我没有。我正在传递这个df,没有任何更改(这只是我问题中的一个示例,但我已经检查过了,没有NaN值。唯一的值是=5。如果在创建类型字典之前显式设置
df['range']=df['range'],会发生什么?astype(“object”)
?我认为这是一个bug。现在它可以正常工作了。谢谢,Arne