我正在尝试根据不同列中的值创建新的特征列。所以我有一个带有注释的列,如果它们包含一个 url 地址,我想输出 1 到新列,否则输出 0,所以这将是一个二元特征创建。
Text Contains_Url
Buy round lot on the open MT @WSJD #AAPL 1
stock briefly dove 6.4% today. Analysts
not sure why https://blogs.wsj.com/moneybeat/
2014/12/01/apple-crash-catches-wall-street-off-guard/
@apple Contact sync between Yosemite and iOS8 is 0
seriously screwed up. It used to be much more stable
in the past. #icloud #isync
所以会有这样的行,如果它有一个 url,我想在数据框中创建一个新的列,根据文本列 1 或 0。只是为了检查与数据集的其余部分相比带有 url 的推文数量,我做了
data.shape
(3804, 12)
data[data.text.str.contains("http")].shape
(2130, 12)
因此它准确地显示了具有 url 的行数。我的想法是创建一个可以执行此操作的函数,并使用 lambda 应用它
def contains_url(row):
if data[data.text.str.contains("http")]:
return 1
else:
return 0
data['contains_url'] = data.apply (lambda row: contains_url(row),axis=1)
ValueError: ('The truth value of a DataFrame is ambiguous. Use a.empty,
a.bool(), a.item(), a.any() or a.all().', 'occurred at index 0')
但是这样做会给我上面的这个错误。任何帮助,将不胜感激。谢谢!
我认为您可以更有效地做到这一点,而无需apply
,只需使用由 产生的布尔值str.contains('http')
,并将其强制转换为int
:
data['contains_url'] = data['Text'].str.contains('http').astype(int)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句