使用从url列中的url提取的信息添加新的数据帧冒号,但url可能缺少信息



给定:包含user_url列和其他列的Panda数据帧。

期望:添加到原始数据帧的新列,其中列由从user_url列中的URL提取的信息组成。这些列是car_makemodelyearuser_id

一些额外信息:我们知道car_make只包含带或不带"-"的字母。model可以包含任何字符。year的长度只有4位。user_id将由任何长度的数字组成。

我厌倦了使用正则表达式来分割url,但当缺少信息或额外信息时,它失败了。我也试过只拼接数据,但使用拆分时遇到了同样的问题。

给定数据帧

mpg  miles                                           user_url  
0   NaN    NaN    https://www.somewebsite.com/suzuki/swift/2015/674857 
1  31.6    NaN      https://www.somewebsite.com/bmw/x3/2009/461150  
2  28.5    NaN  https://www.somewebsite.com/mercedes-benz/e300/1998/13  
3  46.8    NaN            https://www.somewebsite.com/320d/2010/247233  
4  21.0  244.4     https://www.somewebsite.com/honda/pass/2019/1038865
5  25.0  254.4        https://www.somewebsite.com/volkswagen/passat/11

预期数据帧

mpg  miles                                           user_url        car_make     model   year 
0   NaN    NaN   https://www.somewebsite.com/suzuki/swift/2015/674857   suzuki         swift  2015
1  31.6    NaN         https://www.somewebsite.com/bmw/x3/2009/461150   bmw               x3  2009
2  28.5    NaN  https://www.somewebsite.com/mercedes-benz/e300/1998/13  mercedes-benz   e300  1998
3  46.8    NaN           https://www.somewebsite.com/320d/2010/247233   NaN             320d  2010
4  21.0  244.4    https://www.somewebsite.com/honda/pass/2019/1038865   honda           pass  2019
5  25.0  254.4       https://www.somewebsite.com/volkswagen/passat/11   volkswagen    passat   NaN
user_id  
0   674857
1   461150
2       13
3   247233
4  1038865
5       11

您只需要执行

split=df['user_url'].str.split("/", n = 4, expand = True)
df['car_make']=split[3]
df.loc[df['car_make'].str.contains('1|2|3|4|5|6|7|8|9|0'),'car_make']=np.nan

相关内容

  • 没有找到相关文章

最新更新