python - 熊猫应用将列表返回到更多列的函数
问题描述
我有一个对字符串执行修改的函数,在某些条件下,它会返回一个包含修改后的字符串的列表,以及是否获得新字符串的布尔检查。我想将 func 应用于 pandas 数据框列并将结果存储在两个新创建的列中。我找到了一种不优雅的方式来实现这个目的:
主要方法是:
def alter_string(astring):
...
return altered_string, boolean_check
def _perform_mod(astring):
return alter_string(astring)[0]
def _check():
return alter_string(astring)[1]
df['modified']=df['original'].apply(_perform_mod)
df['check']=df['original'].apply(_check)
通过这种方式,我实现了我的目标,但我必须运行两次繁重的计算方法。我想知道是否有更好的方法
添加一些细节以澄清我的问题我有一个数据框列'original_string'
,其中包含作为分子描述符的字符串,我对这个字符串应用了一个在某些情况下可以修改或不修改字符串的函数。该函数返回修改后的字符串和 True 或相同的字符串和 False。我需要向数据框添加两个新列,modified_string
这里check
有一个简短的示例
original ---> modified check
AAAAAA -----> AAAAAA False
AAABCD -----> AAAVCD True
ACCBDE -----> AACADE True
`
解决方案
尝试这个:
df['modified'], df['check'] = zip(*df['original'].apply(alter_string))
这样你alter_string
只运行一次函数。
zip
函数创建一个元组列表,其中每个元组都是一个系列。然后通过元组解包(df['modified'], df['check']
),我们在数据框中创建了全新的列。
基于这个答案
推荐阅读
- python - 为 3D 绘图自动创建图例
- python - 为什么这些带有“和”的语句的顺序即使带有括号也会改变输出?
- html - 在同一选项卡中打开 URL 的 HTML 按钮链接不起作用
- reactjs - 我的网站无法在 IOS 手机上运行 react redux 和 cookies
- html - 如何使背景像素视频显示在我的标题部分并在其顶部显示文本
- javascript - 在没有依赖关系的 Visual Studio Code 中导出 JS 项目
- python - 在python中使用BeautifulSoup从url的源代码中提取某个部分下的文本
- python - 将具有相同索引的多行合并为一行
- html - 滚动到溢出图像的 -y 和 -x
- android - android中的自定义DatePickerDialog