python - 根据另一列中的值创建新列
问题描述
我正在尝试根据不同列中的值创建新的特征列。所以我有一个带有注释的列,如果它们包含一个 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)
推荐阅读
- html - Flex Box 和媒体查询
- javascript - 将 Async/Await 函数转换为针对 IE 11 的普通 ES5
- hybrid-mobile-app - 检查混合应用程序时出现问题。找不到所需的选择器
- javascript - ReactJS 将方法绑定到类组件
- c# - .NET Core 3.0 RouteEndpoint - 如何返回 RedirectToActionResult?
- java - 如何实现客户端凭据流(2 腿 OAuth)以连接到 LinkedIn API?
- javascript - 按降序对数字进行排序,但以 `0` 开头
- python - PVLIB:生成辐照度值就是创建 NaN
- html - 当我在模式弹出窗口中打开日历时,日历会剪切
- c++ - C++中的双指针向量