Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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 删除“;错误的;基于类型和值的数据帧行_Python_Pandas - Fatal编程技术网

Python 删除“;错误的;基于类型和值的数据帧行

Python 删除“;错误的;基于类型和值的数据帧行,python,pandas,Python,Pandas,我有一个数据集,其中包括一列日期和时间值,另一列包含一些测量值(float)。但是,在一些测量过程中,出现了一个错误,导致了一些奇怪的条目-下面的示例(这些条目包括datetime对象的重复部分,该部分被解释为字符串、不完整的datetime对象、完全随机的字符串、缺失的值或超出范围的另一列的值)(测量值大多在10到50之间,但有时我会得到零或100之类的值) 从大型数据集中提取(加载为数据帧): 所有类型错误条目的示例如下。 我怎样才能排除故障线路? 我的想法是做一个if循环,设置条件“t”列

我有一个数据集,其中包括一列日期和时间值,另一列包含一些测量值(float)。但是,在一些测量过程中,出现了一个错误,导致了一些奇怪的条目-下面的示例(这些条目包括datetime对象的重复部分,该部分被解释为字符串、不完整的datetime对象、完全随机的字符串、缺失的值或超出范围的另一列的值)(测量值大多在10到50之间,但有时我会得到零或100之类的值)

从大型数据集中提取(加载为数据帧):

所有类型错误条目的示例如下。 我怎样才能排除故障线路? 我的想法是做一个if循环,设置条件“t”列应该是datetime对象,“baaa”列应该是float>0和<60。如果条件不满足,我将用
np.nan
替换该值,并最终使用
dropna
函数

df['t'] = pd.to_datetime(df['t'], format = '%d/%m/%Y %H:%M', errors='coerce')
df.iloc[:,1] = pd.to_numeric(df.iloc[:,1], errors='coerce')    
for line in df.iloc[:,1]:  
    if (line < 60) & (line > 0):
       line = line
   else:
       line = np.nan
    # not assigning this new value! :( 

    df = df.dropna(subset = df.columns.values, how='any', inplace=True)
df['t']=pd.to_datetime(df['t'],格式为“%d/%m/%Y%H:%m”,错误为“强制”)
df.iloc[:,1]=pd.to_numeric(df.iloc[:,1],errors='concure')
对于df.iloc[:,1]中的行:
如果(线<60)和(线>0):
直线
其他:
line=np.nan
#未分配此新值!:(
df=df.dropna(子集=df.columns.values,how='any',inplace=True)
这似乎解决了大多数问题,但线路需要低于60的情况除外。 我一定是语法错了?这里怎么了? 谢谢!

我认为您需要进行筛选,相反,您可以添加新的(第三个)条件,使用-get all not
NaN
t
NaN
第一列中的值根据第一个和第二个条件进行筛选:

df['t'] = pd.to_datetime(df['t'], format = '%d/%m/%Y %H:%M', errors='coerce')
df.iloc[:,1] = pd.to_numeric(df.iloc[:,1], errors='coerce')  
df = df[(df.iloc[:,1] < 60) & (df.iloc[:,1] > 0) & (df['t'].notnull())]

print (df)
                     t  baaa
0  2014-11-13 23:43:00  17.6
1  2014-11-13 23:44:00  17.7
3  2014-11-13 23:46:00  17.7
4  2014-11-14 00:34:00  16.0
5  2014-11-14 00:35:00  15.9
7  2014-11-14 01:25:00  14.9
8  2014-11-14 01:26:00  14.9
10 2014-11-14 02:16:00  14.3
11 2014-11-14 02:17:00  14.3
13 2014-11-14 03:09:00  13.0
15 2014-11-14 02:19:00  14.3
16 2014-11-14 03:59:00  12.6
17 2014-11-14 04:00:00  12.6
18 2014-11-14 05:41:00  11.7
19 2014-11-14 05:42:00  11.7
21 2014-11-14 04:53:00  12.2
df['t']=pd.to_datetime(df['t'],格式为“%d/%m/%Y%H:%m”,错误为“强制”)
df.iloc[:,1]=pd.to_numeric(df.iloc[:,1],errors='concure')
df=df[(df.iloc[:,1]<60)和(df.iloc[:,1]>0)和(df['t'].notnull())]
打印(df)
巴阿
0  2014-11-13 23:43:00  17.6
1  2014-11-13 23:44:00  17.7
3  2014-11-13 23:46:00  17.7
4  2014-11-14 00:34:00  16.0
5  2014-11-14 00:35:00  15.9
7  2014-11-14 01:25:00  14.9
8  2014-11-14 01:26:00  14.9
10 2014-11-14 02:16:00  14.3
11 2014-11-14 02:17:00  14.3
13 2014-11-14 03:09:00  13.0
15 2014-11-14 02:19:00  14.3
16 2014-11-14 03:59:00  12.6
17 2014-11-14 04:00:00  12.6
18 2014-11-14 05:41:00  11.7
19 2014-11-14 05:42:00  11.7
21 2014-11-14 04:53:00  12.2
df['t'] = pd.to_datetime(df['t'], format = '%d/%m/%Y %H:%M', errors='coerce')
df.iloc[:,1] = pd.to_numeric(df.iloc[:,1], errors='coerce')  
df = df[(df.iloc[:,1] < 60) & (df.iloc[:,1] > 0) & (df['t'].notnull())]

print (df)
                     t  baaa
0  2014-11-13 23:43:00  17.6
1  2014-11-13 23:44:00  17.7
3  2014-11-13 23:46:00  17.7
4  2014-11-14 00:34:00  16.0
5  2014-11-14 00:35:00  15.9
7  2014-11-14 01:25:00  14.9
8  2014-11-14 01:26:00  14.9
10 2014-11-14 02:16:00  14.3
11 2014-11-14 02:17:00  14.3
13 2014-11-14 03:09:00  13.0
15 2014-11-14 02:19:00  14.3
16 2014-11-14 03:59:00  12.6
17 2014-11-14 04:00:00  12.6
18 2014-11-14 05:41:00  11.7
19 2014-11-14 05:42:00  11.7
21 2014-11-14 04:53:00  12.2