Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取pandas'read.csv中的nan_值,使其表示“如果任何单元格中包含字符“C”,则设置为nan”_Python_Csv_Pandas_Dataframe - Fatal编程技术网

Python 如何获取pandas'read.csv中的nan_值,使其表示“如果任何单元格中包含字符“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

我试图通过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='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后,您可以轻松地这样做。我将使用什么函数?