Python 如何获取pandas'read.csv中的nan_值,使其表示“如果任何单元格中包含字符“C”,则设置为nan”
我试图通过pd.read_csv将我的nan_值设置为包含字符“C”的任何字符串。换句话说,如果任何细胞中有“C”,熊猫应该把它读作“NaN” 这是我的代码:Python 如何获取pandas'read.csv中的nan_值,使其表示“如果任何单元格中包含字符“C”,则设置为nan”,python,csv,pandas,dataframe,Python,Csv,Pandas,Dataframe,我试图通过pd.read_csv将我的nan_值设置为包含字符“C”的任何字符串。换句话说,如果任何细胞中有“C”,熊猫应该把它读作“NaN” 这是我的代码: import pandas as pd from pandas import Series, DataFrame In [1]: df = pd.read_csv('file.csv', parse_dates={'timestamp': ['Date','Time']}, index_col='time
import pandas as pd
from pandas import Series, DataFrame
In [1]: df = pd.read_csv('file.csv',
parse_dates={'timestamp': ['Date','Time']},
index_col='timestamp',
usecols=['Date', 'Time', 'a', 'b', 'c', 'd'],
na_values=['0', 'C'], #what should I change here?
)
In [2]:df
Out[2]: timestamp a b c d
2015-10-13 14:58:20 87 168 0.4 0000C000 #should be NaN
2015-10-13 14:58:22 87 168 0.3 0200C500 #should be NaN
2015-10-13 14:58:24 87 168 0.3 8000
2015-10-13 14:58:26 87 168 0.3 8000
2015-10-13 14:58:28 87 170 0.4 8000
2015-10-13 14:58:30 87 170 0.4 8000
问题是,我知道我可以使用str.contains将其设置为布尔值false。但我不知道将str.contains应用于pd.read_csv的na_值的正确方法是什么
In [3]: df['d'].str.contains('C')
Out[3]:timestamp
2015-10-13 14:58:20 True
2015-10-13 14:58:22 True
2015-10-13 14:58:24 False
2015-10-13 14:58:26 False
2015-10-13 14:58:28 False
2015-10-13 14:58:30 False
Name: d, dtype: bool
提前谢谢 定义一个函数,根据需要解释数据。就你而言:
def readD(val):
if 'C' in val:
return numpy.nan
return val
这个函数可以是任意复杂的。当从数据库提取的数据中读取数组类型时,我使用类似的方法;例如,我的单元格保存python列表,而不是像“{1;2;3;4}”这样的字符串
然后将字典映射“d”传递给该函数
df = pd.read_csv('file.csv', (...), converters={'d': readD})
为什么在从CSV读取数据时要这样做?从Excel获取df后,您可以轻松地这样做。我将使用什么函数?