使用python pandas cut函数创建存储箱时数据丢失

2024-09-30 20:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是将一列从df1转移到df2,同时创建bins。我想从df2获取一个名为'tension'的变量并创建垃圾箱。它将列值传输到df2,但df2显示一些丢失的值。 请查找以下代码:

df2=pd.cut(df1["tenure"] , bins=[0,20,60,80], labels=['low','medium','high'])

在创建df2之前,我检查了df1中缺少的值。没有这样的混乱值,但在创建垃圾箱后,它显示了11个缺失值。在

^{2}$

上面的代码显示了11个缺失的值

感谢任何人的帮助。在


Tags: 代码目标labelslowpdmediumdf1df2
1条回答
网友
1楼 · 发布于 2024-09-30 20:34:09

我假设您在df1['tenure']中有一些不在(0,80]中的值,可能是零。参见以下示例:

df1 = pd.DataFrame({'tenure':[-1, 0, 12, 34, 78, 80, 85]})
print (pd.cut(df1["tenure"] , bins=[0,20,60,80], labels=['low','medium','high']))

0       NaN    # -1 is lower than 0 so result is null
1       NaN    # it was 0 but the segment is open on the lowest bound so 0 gives null
2       low
3    medium
4      high
5      high    # 80 is kept as the segment is closed on the right
6       NaN    # 85 is higher than 80 so result is null
Name: tenure, dtype: category
Categories (3, object): [low < medium < high]

现在,您可以在pd.cut中传递参数include_lowest=True,以在结果中保持左边界:

^{pr2}$

最后,我想如果你打印len(df1[(df1.tenure <= 0) | (df1.tenure > 80)]),你将得到11,你的数据是你的df2中的null值的数目(这里是我的数据是3)

相关问题 更多 >