Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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删除行_Python_Pandas_Csv - Fatal编程技术网

Python 如果少数行满足某些条件,如何使用pandas删除行

Python 如果少数行满足某些条件,如何使用pandas删除行,python,pandas,csv,Python,Pandas,Csv,我有一个CSV文件,看起来像: dates, names, column3, column4, column5, column6, column7 1-3-2017,Bob,somedata,somedata,somedata,somedata,somedata 1-1-2018,Bob,-,-,-,-,- 1-1-2017,Bob,somedata,somedata,somedata,somedata,somedata 如果这些行在第3列、第4列、第5列、第6列和第7列中有-,我想使用熊猫

我有一个CSV文件,看起来像:

dates, names, column3, column4, column5, column6, column7 
1-3-2017,Bob,somedata,somedata,somedata,somedata,somedata
1-1-2018,Bob,-,-,-,-,-
1-1-2017,Bob,somedata,somedata,somedata,somedata,somedata
如果这些行在第3列、第4列、第5列、第6列和第7列中有
-
,我想使用熊猫删除这些行

删除不必要的信息后,文件将如下所示

dates, names, column3, column4, column5, column6, column7 
1-1-2017,Bob,somedata,somedata,somedata,somedata,somedata
1-3-2017,Bob,somedata,somedata,somedata,somedata,somedata
我不知道怎么做。谢谢你的帮助。

试试:

filtered = data[(data.column3 != "-") & (data.column4 != "-") & (data.column5 != "-") & (data.column6 != "-") & (data.column7 != "-")]

如果单元格可能只包含“-”,请重试

new_df = df[~(df.iloc[:, 2:] == '-').any(1)]
如果它们可能包含带其他字符的“-”

new_df = df[~df.iloc[:, 2:].apply(lambda x: x.str.contains('-').any(), axis = 1)]
不管怎样,你都会

    dates.      names   column3     column4     column5     column6     column7
0   1-3-2017    Bob     somedata    somedata    somedata    somedata    somedata
2   1-1-2017    Bob     somedata    somedata    somedata    somedata    somedata

一种简单的方法是将
-
转换为
np.nan
,然后使用
df.dropna

import numpy as np

df = df.replace('-', np.nan).dropna(subset=['column'+str(i) for i in range(3, 8)])

#       dates names   column3   column4   column5   column6   column7
# 0  1-3-2017   Bob  somedata  somedata  somedata  somedata  somedata
# 2  1-1-2017   Bob  somedata  somedata  somedata  somedata  somedata