删除0个值,NaN个值和空字符串

时间:2018-07-30 21:32:52

标签: python pandas csv

import pandas as pd   
import csv 
import numpy as np

readfile = pd.read_csv('50.csv')
filevalues= readfile.loc[readfile['Customer'].str.contains('Lam Dep', na=False), 'Jul-18\nQty']
filevalues = filevalues.replace(r'^\s*$', np.nan, regex=True) 
filevalues = filevalues.fillna(int(0))
int_series = filevalues.astype(int) 
calculated_series = int_series.apply(lambda x: x*(1/1.2))


print(calculated_series)

因此,我有数百个csv文件,其中包含许多空白值。某些空格被检测为NaN,另一些则为空字符串。这迫使我以现在的方式创建代码,原因是我需要对每个值进行公式运算,因此我更改了所有例如,将NaN和空字符串设置为0,这样我就可以进行任何公式计算(在本示例中为1 / 1.2。)问题是,在打印数据帧时,我不想看到值为0,NaN或空字符串的情况。 / p>

我尝试使用以下内容:

filevalues = filevalues.dropna()

但是由于某些csv文件包含空字符串,因此该方法无法完全正常工作并出现错误:

ValueError: invalid literal for int() with base 10: '    '

在将所有值都转换为0之后,我还尝试了以下方法:

filevalues = filevalues.loc[:, (filevalues != 0).all(axis=0)]

mask = np.any(np.isnan(filevalues) | np.equal(a, 0), axis=1)

每种方法似乎都给出不同的错误。当我打印熊猫数据框时,有没有一种干净的方法不计算这些类型的值?请让我知道是否需要示例csv文件。

1 个答案:

答案 0 :(得分:0)

开始工作!这是对任何人有用的答案。

import pandas as pd   
import csv 
import numpy as np

readfile = pd.read_csv('50.csv')
filevalues= readfile.loc[readfile['Customer'].str.contains('Lam Dep', na=False), 'Jul-18\nQty']

filevalues = filevalues.replace(" ", "", regex=True)
filevalues.replace("", np.nan, inplace=True) # replace empty string with np.nan
filevalues.dropna(inplace=True) # drop nan values
int_series = filevalues.astype(int) # change type

calculated_series = int_series.apply(lambda x: x*(1/1.2))

print(calculated_series)