3 回答

TA贡献1812条经验 获得超5个赞
你可以这样做extract:
df =pd.DataFrame({'text':["Who would have thought this would be so 4347009 difficult",
"24 is me"]})
df['new_col'] = df['text'].str.extract(r'(\d+)')
text new_col
0 Who would have thought this would be so 434700... 4347009
1 24 is me

TA贡献1895条经验 获得超7个赞
您可以将提取与数字的捕获组一起使用(\d+):
import pandas as pd
data = ["AU/4347001",
"Who would have thought this would be so 4347009 difficult",
"Another with a no numbers",
"131242143"]
df = pd.DataFrame(data=data, columns=['txt'])
result = df.assign(res=df.txt.str.extract('(\d+)')).fillna('')
print(result)
输出
txt res
0 AU/4347001 4347001
1 Who would have thought this would be so 434700... 4347009
2 Another with a no numbers
3 131242143 131242143
注意,在上面的例子中,使用fillna来填充那些没有找到数字组的列,在这种情况下,用空字符串填充。

TA贡献2003条经验 获得超2个赞
这是我们的测试 DataFrame:
### Create an example Pandas Dataframe
df = pd.DataFrame(data=['something123', 'some456thing', '789somthing',
'Lots of numbers 82849585 make a long sentence'], columns = ['strings'])
### Create a function for identifying, joining and then turning the string to an integer
def get_numbers(string):
return int(''.join([s for s in string if s.isdigit()]))
### Now lets apply the get_numbers function to the strings column
df.loc[:,'strings_wo_numbers'] = df.loc[:,'strings']apply(get_numbers)
注意:这将连接字符串中的所有数字,即“10 个橄榄和 5 个苹果”将变成 105 而不是 10、5。
添加回答
举报