2016-05-23 71 views
1

我对此错误的理解是,它表示存在一个long()类型的列。但是这个列包含一个名为'5B'的值,它不是一个长类型。ValueError:long()与基数为10的无效字面值:'5B'

这是发生错误行:

df_Company = df1.groupby(by=['manufacturer','quality_issue'], as_index=False) ['quality_issue2'].count() 

我已经检查的所有列类型数据帧DF1的。但是没有长类型的列。 5B是制造商的名称,所以我假定在这句话中,色谱柱制造商突然变成了长型。

检查了数据帧df1具有的类型。

print (df1.dtypes) 
manufacturer     object 
yearweek       int64 
quality_issue     object 
quality_issue2     object 

我想'我必须做点什么df_Company.astype(long)但似乎我不能使它发挥作用。有没有人有一个想法如何解决这个问题?

注意:奇怪的是,在我的其他电脑上,我有Python 3.5.1相同的代码工作得很好。但是当我在当前有Python 2.7.9的计算机上运行代码时,我得到了这个长时间的错误。

回答

4

问题是不一样的,请参阅8381,但在我的熊猫版本0.18.1它很好。

我想你可以改变FalseTrue然后reset_indexsizecount之间

df_Company=df1.groupby(by=['manufacturer','quality_issue'], as_index=True)['quality_issue2'] 
       .count() 
       .reset_index() 

差异(见differences with numeric values):

样品与string值:

import pandas as pd 
import numpy as np 

df1=pd.DataFrame([['foo','foo','bar','bar','bar','oats'], 
        ['foo','foo','bar','bar','bar','oats'], 
        [None,'foo','bar',None,'bar','oats']]).T 
df1.columns=['manufacturer','quality_issue','quality_issue2'] 
print (df1) 
    manufacturer quality_issue quality_issue2 
0   foo   foo   None 
1   foo   foo   foo 
2   bar   bar   bar 
3   bar   bar   None 
4   bar   bar   bar 
5   oats   oats   oats 

df_Company=df1.groupby(by=['manufacturer','quality_issue'], as_index=False)['quality_issue2'] 
       .count() 
print (df_Company) 

    manufacturer quality_issue quality_issue2 
0   bar   bar    2 
1   foo   foo    1 
2   oats   oats    1 

df_Company1=df1.groupby(by=['manufacturer','quality_issue'])['quality_issue2'] 
       .size() 
       .reset_index(name='quality_issue2') 
print (df_Company1) 

    manufacturer quality_issue quality_issue2 
0   bar   bar    3 
1   foo   foo    2 
2   oats   oats    1 

我认为你可以省略[quality_issue2],输出是一样的:

df_Company1=df1.groupby(by=['manufacturer','quality_issue']) 
       .size() 
       .reset_index(name='quality_issue2') 
print (df_Company1) 
    manufacturer quality_issue quality_issue2 
0   bar   bar    3 
1   foo   foo    2 
2   oats   oats    1 
+0

顺便说一句,你需要'count'?不是“大小”? – jezrael

+2

[differences](http://stackoverflow.com/a/33346694/2901002):['size'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby。 GroupBy.size.html#pandas.core.groupby.GroupBy.size)包含'NaN'值,['count'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core。 groupby.GroupBy.count.html#pandas.core.groupby.GroupBy.count)不是 – jezrael

+0

我试图做的是由制造商分组,并查看制造商有哪些问题。然后计算每个制造商对这些quality_issues有多少问题。因此,我认为最好是用数字代替大小(对吧?)。基本上,quality_issue和quality_issue2列的数据完全相同。 – Morganis

相关问题