我在熊猫身上遇到了一些奇怪的行为
我正在Ubuntu Linux上使用JupyterNotebook v6.0.1和Python 3.7.4
我和一个dataset of bulldozer auction results一起工作
我从csv文件将数据集导入pandas dataframe开始,删除了一些我知道不想使用的功能,并逐年限制数据集,因为我想使用最新的数据
drop_features = ['SalesID','ModelID','MachineID','fiProductClassDesc']
bulldozers_df = pd.read_csv("bluebook-for-bulldozers/Train.csv").drop(drop_features,axis=1)
bulldozers_df = bulldozers_df[pd.to_datetime(bulldozers_df['saledate']).dt.year > 2004]
然后我列出了列的类型
bulldozers_df.dtypes.value_counts()
object 44
int64 3
float64 2
dtype: int64
然后我创建了一个新的合成专栏,其中有一个我想使用的功能
bulldozers_df = bulldozers_df.assign(YearsMadeAgo = bulldozers_df['saledate'].astype('datetime64').dt.year - bulldozers_df['YearMade'].map(lambda x: bulldozers_df['YearMade'].mean() if pd.isna(x) else x))
然后,我再次检查了列
SalePrice int64
datasource int64
auctioneerID float64
YearMade int64
MachineHoursCurrentMeter float64
UsageBand object
saledate object
fiModelDesc object
fiBaseModel object
(... additional features...)
Travel_Controls object
Differential_Type object
Steering_Controls object
YearsMadeAgo int64
然后我决定选择“int64”列。我希望得到4列:SalePrice、datasource、YearMake和YearsMadeAgo(我制作的专栏)
然而,当我运行该命令时,首先我只返回SalePrice、datasource和yearmake
然后,我再试一次,pandas似乎崩溃了,只是将索引返回给我
bulldozers_df.select_dtypes('int64')
SalePrice datasource YearMade
0 66000 121 2004
3 38500 121 2001
4 11000 121 2007
5 26500 121 2004
7 27000 121 2001
... ... ... ...
401120 10500 149 2005
401121 11000 149 2005
401122 11500 149 2005
401123 9000 149 2005
401124 7750 149 2005
bulldozers_df.select_dtypes('int64')
0
3
4
5
7
...
401120
401121
401122
401123
401124
有人知道会发生什么吗?在我添加YearsMadeAgo列之前,df.select\u数据类型似乎可以工作
只要硬件规格是相关的,我有24 GB的RAM,20 GB的空闲空间,1.2%的CPU使用率,Intel(R)Core(TM)i5-4460 CPU@3.20GHz
您使用的是什么环境?因为pandas会在视觉上截断输出以适应特定的单元格或终端输出
差不多
应该有用
也是这样的
如图所示
Pandas printing ALL dtypes
相关问题 更多 >
编程相关推荐