我需要从Pandas数据框中的一列数据中提取特定值,并根据提取的值对其他列进行分组。我需要的模式是U1,U2,U3,... U9。
首先,我找到了match
的数据值:
filtered = df[df['column1'].str.match(r'(U\s*\d)') == True]
print(filtered['column1'])
输出是这样的:
9370 U 1 / U 2; Gleisdreieck, barrierefreier Ausbau
9371 U 1 / U 3; Tunnelsanierung
9372 U 1 / U 6; Hallesches Tor; barrierefreier Ausbau
9373 U 1 / U 8; Kottbusser Tor, barrierefreier Ausbau
9374 U 1 / U 9; Kurfürstendamm, barrierefreier Ausbau
...
34032 U9, Hansaplatz: barrierefreier Ausbau
34033 U9, Nauener Platz: barrierefreier Ausbau
34034 U9, Schloßstraße: barrierefreier Ausbau
34035 U9, Turmstraße: barrierefreier Ausbau
34250 U25
现在,我需要提取U1,... U9。我将代码更改为:
extracted = df[df['column1'].str.extract(r'(U\s*\d)') == True]
但我得到值只有NaN
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
...
40815 NaN
40816 NaN
40817 NaN
40818 NaN
40819 NaN
1条答案
按热度按时间vaqhlq811#
通过执行
df['column1'].str.extract(r'(U\s*\d)') == True
,可以隐式调用pandas.DataFrame.eq
。获取 Dataframe 和其他元素的等于(二元运算符eq)
返回:**布尔值的 Dataframe **
您可以简单地使用此函数来获取第一个匹配项:
或
pandas.Series.str.findall
以获取所有匹配项的列表:#输出:
#编辑:
根据评论,您可以根据自己的期望选择以下解决方案之一: