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文件。
答案 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)