AWS Glue 作业的 CSV 文件无限值问题
CSV file Infinity value issue with AWS Glue job
我有一个 csv 文件,我正在阅读 Pandas 并尝试将 NaN 和 Infinity 转换为 0.0。我有我在本地 运行 并正确获得转换的代码,例如:
df = pd.read_csv('test.csv')
print(df['C1'])
df.replace([np.inf, -np.inf], np.nan, inplace=True)
df = df.fillna(0.00)
print(df['C1'])
0 NaN
1 inf
2 NaN
Name: C1, dtype: float64
0 0.0
1 0.0
2 0.0
Name: C1, dtype: float64
此处,无穷大和 NaN 值已正确转换为 0.0,如输出中所示。但是当我在 AWS Glue Python Shell 作业中执行相同操作时,它不会将无穷大值转换为 0.0。 Glue 作业的代码和输出如下:
df = pd.read_csv('s3://bucket/test.csv')
print(df['C1'])
df = df.replace([np.Infinity, -np.Infinity], np.nan)
df = df.fillna(0.00)
print(df['C1'])
0 NaN
1 Infinity
2 NaN
Name: C1, dtype: object
0 0
1 Infinity
2 0
Name: C1, dtype: object
同一文件在本地和 S3 上使用,但问题在于无限值。此外,在本地,数据类型被读取为 float64,但在 Glue 中是对象类型。对此有任何帮助吗?
我能够根据评论中的 BdR 回复解决它,所以这里是答案:
df = pd.read_csv(input_path, na_values=["Infinity", "-Infinity"])
df = df.replace([np.Infinity, -np.Infinity], np.nan)
df = df.fillna(0.00)
我有一个 csv 文件,我正在阅读 Pandas 并尝试将 NaN 和 Infinity 转换为 0.0。我有我在本地 运行 并正确获得转换的代码,例如:
df = pd.read_csv('test.csv')
print(df['C1'])
df.replace([np.inf, -np.inf], np.nan, inplace=True)
df = df.fillna(0.00)
print(df['C1'])
0 NaN
1 inf
2 NaN
Name: C1, dtype: float64
0 0.0
1 0.0
2 0.0
Name: C1, dtype: float64
此处,无穷大和 NaN 值已正确转换为 0.0,如输出中所示。但是当我在 AWS Glue Python Shell 作业中执行相同操作时,它不会将无穷大值转换为 0.0。 Glue 作业的代码和输出如下:
df = pd.read_csv('s3://bucket/test.csv')
print(df['C1'])
df = df.replace([np.Infinity, -np.Infinity], np.nan)
df = df.fillna(0.00)
print(df['C1'])
0 NaN
1 Infinity
2 NaN
Name: C1, dtype: object
0 0
1 Infinity
2 0
Name: C1, dtype: object
同一文件在本地和 S3 上使用,但问题在于无限值。此外,在本地,数据类型被读取为 float64,但在 Glue 中是对象类型。对此有任何帮助吗?
我能够根据评论中的 BdR 回复解决它,所以这里是答案:
df = pd.read_csv(input_path, na_values=["Infinity", "-Infinity"])
df = df.replace([np.Infinity, -np.Infinity], np.nan)
df = df.fillna(0.00)