gpt4 book ai didi

python - Pandas - 如何避免将 map 转换为 float

转载 作者:行者123 更新时间:2023-12-05 02:30:25 24 4
gpt4 key购买 nike

I have a dictionary:

matches = {282: 285,
266: 277,
276: 293,
263: 264,
286: 280,
356: 1371,
373: 262,
314: 327,
294: 290,
285: 282,
277: 266,
293: 276,
264: 263,
280: 286,
1371: 356,
262: 373,
327: 314,
290: 294}

还有一个 df,像这样:

    team_id 
0 327
1 293
2 373
3 282
4 314
5 263
6 280
7 354
8 264
9 294
10 1371
11 262
12 266
13 356
14 290
15 285
16 286
17 275
18 277
19 276

现在我正在尝试创建一个“adversary_id”列,从字典映射,如下所示:

df['adversary_id'] = df['team_id'].map(matches)

但这个新列 adversary_id 正在转换为 type float,并且两行以 NaN 结尾:

为什么,如果所有数据都是 int 类型?

我该如何解决这个问题?

最佳答案

这是因为您在数据框中看到的 np.nan 或 NaN(它们并不完全相同)值是 float 类型。遗憾的是,只要您的代码中有 NaN 值,就无法避免这种限制。

请阅读 pandas 文档中的更多信息 here .

Because NaN is a float, a column of integers with even one missing values is cast to floating-point dtype (see Support for integer NA for more). pandas provides a nullable integer array, which can be used by explicitly requesting the dtype:

建议的解决方案是强制使用 type:

df['team_id'] = pd.Series(df['team_id'],dtype=pd.Int64Dtype())

返回:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 1 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Example 4 non-null Int64
dtypes: Int64(1)
memory usage: 173.0 bytes

关于python - Pandas - 如何避免将 map 转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71864620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com