麻烦在熊猫中丢弃NaN [重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我有一段时间将pandas数据集中的列从“对象”更改为“int64”。我的DataFrame名为bsblandings。

我的bsblandings.info()输出如下所示:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 810 entries, 0 to 809
Data columns (total 9 columns):
Year           810 non-null int64
Coast          810 non-null object
Subregion      810 non-null object
State          810 non-null object
Common Name    810 non-null object
Pounds         810 non-null object
Live Pounds    810 non-null object
Dollars        810 non-null object
% Display      810 non-null object
dtypes: int64(1), object(8)
memory usage: 57.0+ KB

我需要使用“Pounds”列,并且我成功地将所有非int64值从“*”更改为“0”。我也试过使用numpy和NaN。

我用了:

bsblandings = bsblandings.replace('*', ' ')

这并没有将dtype从“object”更改为“int64”(尽管所有“*”实际上都被“0”替换。

然后我尝试使用以下方法对Pounds列进行排序:

bsblandings.sort_values("Pounds")

我真正需要的是将Pounds列从最小到最大(或从最大到最小)排序。当我尝试使用.sort_values执行此操作时,它没有正确排序列。相反,我得到了一个订购输出103800,10400,104400,10600:

90  1951    US Atlantic Coast   North Atlantic  MASSACHUSETTS   BASS, BLACK SEA 103800  103800      100%
223 1964    US Atlantic Coast   North Atlantic  MASSACHUSETTS   BASS, BLACK SEA 10400   10400   1687    100%
380 1977    US Atlantic Coast   North Atlantic  MASSACHUSETTS   BASS, BLACK SEA 104400  104400  67172   100%
269 1965    US Atlantic Coast   North Atlantic  MASSACHUSETTS   BASS, BLACK SEA 10600   10600   1379    100%

我是一个菜鸟,我搜索和搜索,但我一直在打墙。任何帮助将非常感激。

python pandas numpy nan
2个回答
1
投票

这不是错误:排序是正确的。您的Pounds列是字符串格式,因此这是应用的排序。字符串按整理顺序排序,而不是明显的数值。因此,以“103”开头的任何东西都小于以“104”开头的任何东西。

如果你想要一个数字排序,要么将列转换为int,要么指定一个排序密钥,在它去的时候转换为int


0
投票

这照顾好了!

bsblandings [“Pounds”] = pd.to_numeric(bsblandings [“Pounds”])

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.