从数据框中删除包含特定字符串的行

时间:2018-10-30 07:54:08

标签: python pandas

我有许多.csv文件,其头部看起来像:

09/07/2014,26268315,,
10/07/2014,6601181,16.3857
11/07/2014,916651,12.5879
14/07/2014,213357,,
15/07/2014,205019,10.8607

我需要将其读入数据框并使用,,删除任何行,但是当我使用以下命令将.csv读入数据框时:

df = pd.read_csv(raw_directory+'\\'+filename, error_bad_lines=False,header=None)

我得到:

            0         1        2   3
0  09/07/2014  26268315      NaN NaN
1  10/07/2014   6601181  16.3857 NaN
2  11/07/2014    916651  12.5879 NaN
3  14/07/2014    213357      NaN NaN
4  15/07/2014    205019  10.8607 NaN

有人可以让我知道如何将.csv读入数据框并获取:

                             0 
 0       09/07/2014,26268315,,
 1  10/07/2014,6601181,16.3857
 2   11/07/2014,916651,12.5879
 3         14/07/2014,213357,,
 4   15/07/2014,205019,10.8607

我需要删除存在,,的所有行。然后将调整后的数据帧重新保存到新的.csv文件。我要使用:

stringList = [',,']

df = df[~df[0].isin([stringList])]

要删除带有的行,则出现的.csv头看起来像:

10/07/2014,6601181,16.3857
11/07/2014,916651,12.5879
15/07/2014,205019,10.8607

欢呼

1 个答案:

答案 0 :(得分:3)

我想这里可以删除所有NaN的所有列,然后删除任何NaN的行:

df = df.dropna(axis=1, how='all').dropna()
print (df)
            0        1        2
1  10/07/2014  6601181  16.3857
2  11/07/2014   916651  12.5879
4  15/07/2014   205019  10.8607

另一种解决方案是添加分隔符,该分隔符的值不在|之类的数据中,然后按endswith进行过滤:

df = pd.read_csv(raw_directory+'\\'+filename, error_bad_lines=False,header=None, sep='|')
df = df[~df[0].str.endswith(',')]
#alternative solution - $ is for end of string
#df = df[~df[0].str.contains(',$')]
print (df)
                            0
1  10/07/2014,6601181,16.3857
2   11/07/2014,916651,12.5879
4   15/07/2014,205019,10.8607