如何快速创建包含“文件”列中包含的三个块的新列?
收到这样的混乱数据
d = { 'File' : pd.Series(['firstname lastname 05/31/1996 9999999999 ', 'FN SometimesMiddileInitial. LN 05/31/1996 9999999999 ']),
'Status' : pd.Series([0., 0.]),
'Error' : pd.Series([2., 2.])}
df=pd.DataFrame(d)
更新
实际上,我是从一个非常混乱的excel文件开始的,并且我的数据在字符串字符之间有'\ xa0 \ xa0'。
所以我的第一次尝试看起来像
from pandas import DataFrame, ExcelFile
import pandas as pd
location = r'c:/users/meinzerc/Desktop/table.xlsx'
xls = ExcelFile(location)
table = xls.parse('Sheet1')
splitdf = df['File'].str.split('\s*)
我的尝试根本行不通。为什么?
最佳答案
您可以使用正则表达式选择至少两个空格:
In [11]: df.File.str.split('\s\s+')
Out[11]:
0 [firstname lastname, 05/31/1996, 9999999999, ]
1 [FN SometimesMiddileInitial. LN, 05/31/1996, 9...
Name: File, dtype: object
也许更好的选择是使用extract(也许有一个更整洁的正则表达式!):
In [12]: df.File.str.extract('\s*(?P<name>.*?)\s+(?P<date>\d+/\d+/\d+)\s+(?P<number>\w+)\s*')
Out[12]:
name date number
0 firstname lastname 05/31/1996 9999999999
1 FN SometimesMiddileInitial. LN 05/31/1996 9999999999
[2 rows x 3 columns]
关于python - 将字符串解析为列python pandas/xa0而不是空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21296571/