【问题标题】:remove specific characters in dataframe and csv file删除数据框和 csv 文件中的特定字符
【发布时间】:2017-08-17 19:30:46
【问题描述】:

我有一个 csv 文件,我使用 pandas 数据框进行处理。 在名为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]]

【问题讨论】:

    标签: python-3.x csv pandas dataframe


    【解决方案1】:

    如果需要替换所有列中的值,我认为您可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 2013-06-15
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多