python-3.x - 如何将值添加到缺失值 i
问题描述
我有一个数据框,
Software Product Case Number Num of days
MDM9607.LE.1.0 2774904 -19.13888889
MDM9607.LE.1.0 2774203 -19.60069444
MDM9607.LE.1.0 2768088 -24.81597222
MDM9607.LE.1.0 2767500 -25.0125
MDM9607.LE.1.0 2764617 -26.67916667
MDM9607.LE.1.0 2766991 -25.17430556
MDM9607.LE.1.0 2765696
MDM9607.LE.1.0 2764204
MDM9607.LE.1.0 2764199
MDM9607.LE.1.0 2774434 365
MDM9607.LE.1.0 2769029 377
MDM9607.LE.1.0 2764195 380
MDM9607.LE.1.0 2763721 25
MDM9607.LE.1.0 2770456 380
MDM9607.LE.1.0 2768423
所需的输出条件:
If:
f9['Num of days'] > 365 than print L
f9['Num of days'] < 365 than print N
f9['Num of days'] == NaN than print U
代码:
import pandas as pd
import numpy as np
df1 = pd.read_excel(r"Rawreport_2017.xlsx")
df2 = pd.read_excel(r"Sampleswpl.xlsx")
f9 = pd.merge(df1, df2, on=['Software Product'], how='outer')
f9.to_excel(r"merge_new_1.xlsx")
f9['Num of days'] = f9['Date/Time Opened'] - f9['CSDate']
f9['Num of days_u']=f9['Num of days'].fillna('u')
f9['status'] = np.where(f9['Num of days'] > 365, 'L', 'NL','u')
f9.to_excel(r"merge_status_5.xlsx")
我正在使用包含一些缺失值的 Dataframe,缺失值应该打印为 Unknown,但是如果列大于 365,那么它应该打印为“L”<365 应该打印为“N”,但我有一些逻辑,但是此缺失值也被视为 0(零)并打印为“N”。
预期的输出应该是
Software Product Case Number Num of days Status
MDM9607.LE.1.0 2774904 -19.13888889 N
MDM9607.LE.1.0 2774203 -19.60069444 N
MDM9607.LE.1.0 2768088 -24.81597222 N
MDM9607.LE.1.0 2767500 -25.0125 N
MDM9607.LE.1.0 2764617 -26.67916667 N
MDM9607.LE.1.0 2766991 -25.17430556 N
MDM9607.LE.1.0 2765696 U
MDM9607.LE.1.0 2764204 U
MDM9607.LE.1.0 2764199 U
MDM9607.LE.1.0 2774434 365 L
MDM9607.LE.1.0 2769029 377 L
MDM9607.LE.1.0 2764195 380 L
MDM9607.LE.1.0 2763721 25 N
MDM9607.LE.1.0 2770456 380 L
我使用了上面的,但我得到了:
TypeError: where() takes at most 3 arguments (4 given)
解决方案
使用numpy.select
- 首先测试缺失值Series.isna
,然后按条件,最后使用参数default
:
m1 = f9['Num of days'].isna()
m2 = f9['Num of days'] > 365
f9['Status'] = np.select([m1, m2], ['U','L'], default='N')
print (f9)
Software Product Case Number Num of days Status
0 MDM9607.LE.1.0 2774904 -19.138889 N
1 MDM9607.LE.1.0 2774203 -19.600694 N
2 MDM9607.LE.1.0 2768088 -24.815972 N
3 MDM9607.LE.1.0 2767500 -25.012500 N
4 MDM9607.LE.1.0 2764617 -26.679167 N
5 MDM9607.LE.1.0 2766991 -25.174306 N
6 MDM9607.LE.1.0 2765696 NaN U
7 MDM9607.LE.1.0 2764204 NaN U
8 MDM9607.LE.1.0 2764199 NaN U
9 MDM9607.LE.1.0 2774434 365.000000 N
10 MDM9607.LE.1.0 2769029 377.000000 L
11 MDM9607.LE.1.0 2764195 380.000000 L
12 MDM9607.LE.1.0 2763721 25.000000 N
13 MDM9607.LE.1.0 2770456 380.000000 L
14 MDM9607.LE.1.0 2768423 NaN U
推荐阅读
- regex - Hugo标签之间的正则表达式匹配
- layout - ASP.Net Core MVC 布局问题
- powershell - Powershell 中 Windows 系统安装程序脚本的 Visual Studio Code 的任务名称
- jcache - 当因达到 MaxObjects 而从 JCS 中删除项目时收到通知
- java - Quarkus Multimaven 容器化环境中的 Kafka 消息传递
- c++ - 在更现代的 cmake 中使用箭头镶木地板的最佳方法是什么?
- javascript - PACT.io:获取丢失的请求错误和错误:禁止跨源 http://localhost
- c# - 将通过反射发现的类型与 .NET 中的引用类型进行比较
- xcode - Xcode:集合视图未正确显示
- javascript - 在保持引用相等的同时在 react 中传播 props