python - 如何调用熊猫数据框应用函数返回两个变量
问题描述
我想调用 pandas 数据框apply()
函数来返回两个变量
举些例子:
print(word_list)
['abc', 'lmn', ]
def is_related_content(x):
for y in word_list:
if y in x:
return x, y
return '', ''
print(df.head())
str1
abcdef
hijklmn
asddada
# call apply() function like this
df['string'], df['substring'] = df['str1'].apply(lambda x: is_related_content(x))
# it should be like this
print(df.head())
str1 string substring
abcdef abcdef abc
hijklmn hijklmn lmn
asddada None None
但我收到如下错误消息:
news_df['merge_' + col], news_df[col] = news_df['content'].fillna("").apply(lambda x: is_related_content(x))
ValueError: too many values to unpack (expected 2)
有人可以帮我吗?
提前致谢。
解决方案
您需要一个 Series 元组才能使解包语法起作用。但是apply
方法返回的是一系列元组。您可以.str
在之后使用访问器apply
将结果解压缩为元组:
更新:
s = df['str1'].apply(lambda x: is_related_content(x))
df['string'], df['substring'] = s.str[0], s.str[1]
df
# str1 string substring
#0 abcdef abcdef abc
#1 hijklmn hijklmn lmn
#2 asddada
df['string'], df['substring'] = df['str1'].apply(lambda x: is_related_content(x)).str
df
# str1 string substring
#0 abcdef abcdef abc
#1 hijklmn hijklmn lmn
#2 asddada
推荐阅读
- python - Python-Selenium - if else 语句检查元素可见性并单击(如果可用)
- reactjs - 如何使用酶在具有特定类的元素中找到 React 组件?
- regex - 如何为此创建 REGex ---> 7 到 12 个字符长,第 4、第 6 和(如果存在)第 10 是以下之一:1、5、9、A、S、K
- azure - 通过 TLS 从 Azure Function 使用 MQTT 触发器时出现问题
- python - 如何在 Python 3 中测试 NoneType 上的两个变量?
- python - Cython 中有哪些可用的类型?
- python - 如何改进我的 Python 代码以应用于有向图的 n 个节点?
- jenkins - 在不重复代码的情况下执行两个类似的 Jenkinsfile 管道
- java - 无法在 PDF 中保存阿拉伯语单词 - PDFBox Java
- google-chrome-extension - 在 chrome 扩展中跟踪网络日志和 console.log