pivot_table - TypeError:'>' 'str'和'int'实例之间不支持

时间:2018-01-23 05:28:52

标签: python pandas pivot-table

我希望使用pivot_table功能来显示数据而不是分组依据。

我的数据:

df_Sample = df[['trading_book','state', 'rfq_num_of_dealers']].head(20)
df_Sample.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20 entries, 0 to 19
Data columns (total 3 columns):
trading_book          20 non-null object
state                 20 non-null object
rfq_num_of_dealers    20 non-null float64
dtypes: float64(1), object(2)
memory usage: 560.0+ bytes

df_Sample 

trading_book    state       rfq_num_of_dealers
SFICSUPR        Traded Away     6
SFICGOVT        Covered         6
SFICGOVT        Done            6
SFICGOVT        Dealer Timeout  5
SFICGOVT        Dealer Timeout  5
SFICGOVT        Dealer Timeout  5
SFICSUPR        Traded Away     5
SFICSUPR        Dealer Reject   2
SFICGOVT        Traded Away     5
SFICGOVT        Traded Away     5
SFICGOVT        Done            5
SFICGOVT        Customer Reject 3
SFICGOVT        Done            7
SFICSUPR        Dealer Reject   4
SFICSUPR        Dealer Reject   2
SFICSUPR        Dealer Reject   5
SFICSUPR        Dealer Reject   2
SFICSUPR        Dealer Reject   2
SFICSUPR        Traded Away     5
SFICSUPR        Dealer Reject   2

我已将rfq_num_of_dealers列从float64转换为str并尝试使用此对象:

df_Sample['rfq_num_of_dealers'] = df[['rfq_num_of_dealers']].apply(str)
df_Sample['trading_book'] = df[['trading_book']].apply(str)
df_Sample['state'] = df[['state']].apply(str)

但错误仍然存​​在:

pd.pivot_table(df_Sample, 
                index=['trading_book'],
                columns=['state'], 
                values='rfq_num_of_dealers',
                aggfunc='count')
  

错误类型错误:'&gt;' 'str'和。实例之间不支持   'INT'

24/01/2018更新:

我更深入地研究了这个错误。我确实使用了错误的数据帧,但是当我增加样本量时错误仍然存​​在。上面的集合是20行,原始是17 839行。在大型数据集上运行pivot_table时出现错误。如果我将读入的记录限制为17839,则不会引发错误,

df_Sample = df[['trading_book','state', 'rfq_num_of_dealers']].head(17840)

导入少一条记录,不会引发错误

df_Sample = df[['trading_book','state', 'rfq_num_of_dealers']].head(17839)

EOF有一个空白行,后跟文字:“(17839行受影响)”,如附图所示。

Screenshot of EOF

那么最好的方法是什么呢?限制导入的记录数或更改pivot_table命令以忽略EOF?

1 个答案:

答案 0 :(得分:0)

结果是我的枢轴列(用作枢轴的列)中的一个简单错误&#39; STAGE&#39; 。在另一个文件中,我将其设置为:

data.loc[data.URI.str.contains('X'), 'STAGE'] = '1'
data.loc[data.URI.str.contains('Y'), 'STAGE'] = '2'
data.loc[data.URI.str.contains('X'), 'STAGE'] = '3'
data.fillna({'STAGE':0}, inplace=True)

注意默认值是float 0.0 ...