如何在每个元素的列表上用“ _”替换空格-Python

时间:2019-12-04 13:30:34

标签: python-3.x pandas replace

我使用以下命令导入了.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. 在导入过程中是否有任何变通方法/快捷方式,可以让我使用“ _”(下划线符号)在“     “(空格)

3 个答案:

答案 0 :(得分:3)

这可以使用str.replace

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

答案 1 :(得分:2)

尝试一下,假设您的列名是这样的

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

答案 2 :(得分: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)