使用 python 从提取的文本中获取数字数据
Getting numeric data from extracted texts using python
我已经提取了用户的推文和位置以及其他重要的推文信息。下一步是提取水位数据(也就是说,如果推文有 'number' 后跟 'm' 或 'meter' 则可以将其视为水位数据。
数据集样本是这样的('text'是提取的推文的列名,'df'是可以找到第'text'列的数据框的名称):
text
there is 12m water here
I saw a 5m wave height
我试过使用下面的代码:
length = len(df['text'])
for i in range(length):
if df.loc[df['text'].str.contains('%d'+ 'm')] or if df.loc[df['text'].str.contains('%d'+ 'meter')] :
df.loc[df['remarks']]== 'YES'
else:
df.loc[df['remarks']] == 'NO'
我的错误是:
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我只知道“%d”用于数字,但我不是 python 方面的专家。谁能帮忙修改上述代码?
您应该使用正则表达式,例如:
import re
txt = "The rain is 12m"
x = re.findall("\d[\d]*m*", txt)
print(x)
if x:
print("Yes, there is at least one match!")
else:
print("No match")
我已经提取了用户的推文和位置以及其他重要的推文信息。下一步是提取水位数据(也就是说,如果推文有 'number' 后跟 'm' 或 'meter' 则可以将其视为水位数据。
数据集样本是这样的('text'是提取的推文的列名,'df'是可以找到第'text'列的数据框的名称):
text
there is 12m water here
I saw a 5m wave height
我试过使用下面的代码:
length = len(df['text'])
for i in range(length):
if df.loc[df['text'].str.contains('%d'+ 'm')] or if df.loc[df['text'].str.contains('%d'+ 'meter')] :
df.loc[df['remarks']]== 'YES'
else:
df.loc[df['remarks']] == 'NO'
我的错误是:
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我只知道“%d”用于数字,但我不是 python 方面的专家。谁能帮忙修改上述代码?
您应该使用正则表达式,例如:
import re
txt = "The rain is 12m"
x = re.findall("\d[\d]*m*", txt)
print(x)
if x:
print("Yes, there is at least one match!")
else:
print("No match")