我希望使用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行受影响)”,如附图所示。
那么最好的方法是什么呢?限制导入的记录数或更改pivot_table命令以忽略EOF?
答案 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 ...