我有下面的数据框,我想从A列中提取一些信息,然后创建其他列以根据其类型添加它们。 下面是一个示例来说明这一点。
In [0]: df
Out[0]:
A
0 1258GA 25/01/20 TABLE 090626 038272
1 GOODIES 762088 A714816
2 TABLE AA88547 734963 GOODIES
3 WATER 02/450 FROM TOMORROW 48246
4 02H12 ALSCA 00548246B GOODIES
我想在下面给出结果。
In [1]: df
Out[1]:
A Category Date Hour
0 1258GA 25/01/20 TABLE 090626 038272 TABLE 25/01/20
1 GOODIES 762088 A714816 GOODIES
2 TABLE AA88547 734963 GOODIES TABLE GOODIES
3 WATER 02/450 FROM TOMORROW 48246 WATER
4 02H12 ALSCA 00548246B GOODIES GOODIES 02H12
我尝试了很多事情,但没有得到结果
答案 0 :(得分:1)
也许有帮助:
df['A'].str.findall(r'\b[A-Z]+\b').str.join(' ')
0 TABLE
1 GOODIES
2 TABLE GOODIES
3 WATER FROM TOMORROW
4 ALSCA GOODIES
答案 1 :(得分:0)
您当然可以使用Series.str
方法来做到这一点,
Series.str.extract()
返回:将正则表达式中的捕获组提取为DataFrame中的列。
对于系列中的每个主题字符串,请从第一个主题中提取组 正则表达式匹配。
在系列/索引中查找所有出现的模式或正则表达式。
这是代码段,
编辑:
df["Category"] = df['A'].str.findall(r"(\b[A-Za-z]+\b)").str.join(' ')
df["Date"] = df['A'].str.extract(r"(\b[0-9]+/[0-9]+/[0-9]+\b)")
df["Hour"] = df['A'].str.extract(r"(\b[0-9]+H[0-9]+\b)")
输出将是
A Category Date Hour
0 1258GA 25/01/20 TABLE 090626 038272 TABLE 25/01/20 NaN
1 GOODIES 762088 A714816 GOODIES NaN NaN
2 TABLE AA88547 734963 GOODIES TABLE GOODIES NaN NaN
3 WATER 02/450 FROM TOMORROW 48246 WATER FROM TOMORROW NaN NaN
4 02H12 ALSCA 00548246B GOODIES ALSCA GOODIES NaN 02H12