[英]Python - How to split column values using multiple separators
我正在读取.csv文件并创建熊猫数据框。 我从此数据框中获取一个值,该值应该是其中包含逗号分隔值的“列表”项。 但是它作为“字符串”项出现,我必须使用分隔符来拆分其中的值。
例如:我有一个名称为“ column_names”的字符串变量,具有以下值
column_names = "First_Name, Last_Name,Middle_Name"
column_names = column_name.split(',')
请注意第二个值之前的空格。 因此,当我打印此变量时,我将在第二个元素之前得到一个空格,这将在从该变量提取值时进一步造成麻烦。
print(column_names)
['First_Name','Last_Name','Middle_Name']
为了克服这个问题,如果我让分隔符和实际的分隔符一起留有一个空格(这里是','),那么这些值将无法正确分割,如下所示
column_names = "First_Name, Last_Name,Middle_Name"
column_names = column_names.split(', ')
print(column_names)
['First_Name','Last_Name,Middle_Name']
拆分时请注意逗号右边的空格。 使用此分隔符,我只能获得两个值,而不是三个值。
我的问题是变量可能包含逗号分隔的值,以及逗号左侧或右侧的空格,或者根本没有空格。 我必须用一个命令处理所有情况(如果可能)。 诸如在拆分时提供多个分隔符值之类的东西。
例如:column_names.split(','|','|',')。
不确定是否存在此类指针,但是任何指向此指针的指针将有所帮助。
这是CSV的常见问题。 幸运的是,您可以通过正确读取CSV来将其压缩在萌芽中,因此您以后不必进行所有不必要的后处理。
当使用read_csv
读取数据帧时,将正则表达式传递给sep
\\ delimiter
-
df = pd.read_csv(..., sep='\s*,\s*', engine='python')
现在, df.columns
应该是字符串列表。
您可以使用skipinitialspace=True
参数 :
df = pd.read_csv(filename, sep=',', skipinitialspace=True)
skipinitialspace :布尔值,默认为False
Skip spaces after delimiter.
注意:此参数仅处理定界符后的空格,因此@cᴏʟᴅsᴘᴇᴇᴅ的答案更为通用。
import re
column_names = "First_Name , Last_Name,Middle_Name"
l = re.compile("\s*,\s*").split(column_names)
print(l)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.