删除dataframe和csv文件中的特定字符

时间:2017-03-24 18:23:21

标签: python-3.x csv pandas dataframe

我有一个使用pandas dataframe处理的csv文件。 在名为left的列中,我应该只有数字 1)

  df.icol(4) 
    0       2492
    1       2448
    2       2410
    3       2382
    4       2358
    5       2310
    6       2260
    7       2208
    8       2166
    9       2134
    10       198
    11       198
    12       239
    13       239
    14       243
    15       241
    16       239
    17       394
    18       396
    19       396
    20       396
    21       396
    22       396
    23       396
    24       396
Name: bottom, dtype: object

然而,在我的csv文件中更进一步,我注意到我有类似396]或[456。我的问题是如何删除此列中的所有[和]。 2) 在另一栏

df1.icol(0)
0       'm'
1       'i'
2       'i'
3       'l'
4       'm'
5       'u'
6       'i'
7       'l'
8       'i'
9       'l'
10      '.'
11      '3'
12      'A'
13      'M'
14      'S'
15      'U'
16      'N'
17      'A'
18      'D'
19      'R'
20      'E'
21      'S'
22      'S'
23      'E'
Name: char, dtype: object

我还注意到我的行有['E']'S'而不是'E''S'。 如何删除[]

3)我有一个数据框

df =[['c', 88, 118, 2872, 2902], [] ,['g', 8, 98, 287, 202]]

我想删除所有'[]' 因此,我正在寻找以下内容:

df= [['c', 88, 118, 2872, 2902], ['g', 8, 98, 287, 202]]

1 个答案:

答案 0 :(得分:3)

我认为如果需要替换所有列中的值,可以使用replace清空字符串:

df = df.replace(['\[','\]'], ['',''], regex=True)

样品:

df = pd.DataFrame({'char':['[E','S]','[E']})
print (df)
  char
0   [E
1   S]
2   [E

df = df.replace(['\[','\]'], ['',''], regex=True)
print (df)
  char
0    E
1    S
2    E

如果只需要在一栏中更换:

df.char = df.char.replace(['\[','\]'], ['',''], regex=True)
print (df)
  char
0    E
1    S
2    E

要删除空列表,请使用list comprehension

L = [['c', 88, 118, 2872, 2902], [] ,['g', 8, 98, 287, 202]]

L1 = [x for x in L if len(x) !=0]
print (L1)
[['c', 88, 118, 2872, 2902], ['g', 8, 98, 287, 202]]

并删除NaNdropna

df = pd.DataFrame([['c', 88, 118, 2872, 2902], [] ,['g', 8, 98, 287, 202]])
print (df)
      0     1      2       3       4
0     c  88.0  118.0  2872.0  2902.0
1  None   NaN    NaN     NaN     NaN
2     g   8.0   98.0   287.0   202.0

print (df.dropna(how='all'))
   0     1      2       3       4
0  c  88.0  118.0  2872.0  2902.0
2  g   8.0   98.0   287.0   202.0