string - 在 Pandas 数据框中传递字符串变量值
问题描述
我一直在尝试使用变量将数据框中的字符串值传递给各种列操作,但是代码给了我错误的结果。请参阅下面的代码,我在 Jupyter Notebook 中使用:
first_key = input("key 1: ")
second_key = input("ket 2: ")
third_key = input("ket 2: ")
这些接收值“俄罗斯”、“中国”、“特朗普”用于下一个单元格中的操作,如下所示:
tweets['{first_key}'] = tweets['text'].str.contains(r"^(?=.*\b{first_key}\b).*$", case=False) == True
tweets['{second_key}'] = tweets['text'].str.contains(r"^(?=.*\b'{second_key}'\b).*$", case=False) == True
tweets['{third_key}'] = tweets['text'].str.contains(r"^(?=.*\b'{third_key}'\b).*$", case=False) == True
但结果是错误的。任何想法如何获得正确的结果。结果的小快照是这样的。
解决方案
我试过清理你的代码。您可以利用 f-strings(使用 python-3.6+)对您的代码进行微小的更改:
def contains(series, key):
return series.str.contains(rf"^(?=.*\b{key}\b).*$", case=False)
如果您使用的是旧版本的 python,请使用str.format
:
def contains(series, key):
return series.str.contains(r"^(?=.*\b{}\b).*$".format(key), case=False)
接下来,在循环中调用此函数:
for key in (first_key, second_key, third_key):
tweets[key] = contains(tweets['text'], key)
推荐阅读
- react-native - 反应原生错误
- math - 10,25,50,100,250,500,1000 如何找到这个序列方程来绘制在图中
- python - 带有 Pushover 的 Python:没有名为 pushover 的模块
- alexa - Alexa - 一旦音频开始,卡片标题和描述就会消失
- javascript - 如何从json数据中过滤子菜单并绑定到angular2中的html
- maven - 当父 POM 未定义该属性时插件配置中的默认属性值
- javascript - 为什么 '\\\[' 等于 '\\[' ?反斜杠如何在字符串中工作?
- android - 在不存储用户生物特征的情况下使用 Touch ID 或 Face ID
- wordpress - 安装 Wordpress 并替换旧的 OAK cms
- powershell - 为什么使用 PowerShell 进行排序不会反映在实际文件夹中?