【问题标题】:how to replace blank space with "_" on every element's list - Python如何在每个元素的列表中用“_”替换空格 - Python
【发布时间】:2020-03-29 07:49:29
【问题描述】:

我用这个命令导入了一个 .csv 文件:

 mydata = pd.read_csv(file ,sep='\t' , engine='python' , dtype = {'Day' : np.datetime64 , 'Year' : np.int}  )

但我注意到有些列名有空格,例如 Account id 而不是 Account_id

现在我得到了我的列名列表:

dwb_col= data.columns

我想在每个列名(即每个 dwb_col 元素)上用"_" 替换blank spaces " "

为了以这种方式重命名列: mydata.columns = [my_new_columns_list]

  1. 如何进行查找和替换部分?

  2. 在导入过程中是否有任何解决方法/快捷方式可以让我在“ "(空格) ?

【问题讨论】:

  • 你能添加一些虚拟数据吗?您是否正在导入多个 csv,其中一些具有不同的列名?
  • 我只加载了一个 csv 文件,其中有一些列命名如下:'column 1' 而不是 'column_1'。
  • data.columns = [x.replace(' ', '_') for x in data.columns]
  • no.2 不清楚我不确定您是否只想使用 '_' 收集列名或在 read 参数中进行替换,无论哪种方式,以下任何解决方案都可以工作.

标签: python-3.x pandas replace


【解决方案1】:

另一种方法是使用正则表达式 \s+ 将匹配 1 个或多个空格,而 ' ' 将仅匹配一个

dwb_col = df.columns.str.replace('\s+', '_') 

然后重新分配

df.columns = dwb_col

如果您想要先删除尾随或前导空格,您可以添加一个 str.strip

df.columns.str.strip().str.replace('\s+', '_') 

关于数字 2,您可以导入文件并使用 nrows 参数仅收集前 n 行以收集列名。

col_df = pd.read_csv(data,nrows=1)
cols = [col for col in col_df.columns.tolist() if '_' in col]

然后使用usecols读取您的数据

df = pd.read_csv(data,usecols=cols)

【讨论】:

    【解决方案2】:

    这样就可以了,使用str.replace:

    df.columns = df.columns.str.replace(" ", "_")
    

    【讨论】:

      【解决方案3】:

      试试这个,假设你的列名是这样的

      l = ["hello world","hello cat"]
      cols = ['_'.join(i.split()) for i in l]
      #outout
      ['hello_world', 'hello_cat']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-16
        • 2022-11-14
        • 2018-08-16
        • 2017-02-01
        • 2020-01-10
        • 1970-01-01
        • 1970-01-01
        • 2015-02-12
        相关资源
        最近更新 更多