Python 应用将列表返回到更多列的函数

Python 应用将列表返回到更多列的函数,python,pandas,Python,Pandas,我有一个函数,它在某种条件下对字符串执行修改,然后返回一个包含修改后的字符串的列表,并在获得新字符串时进行布尔检查。 我想将func应用于dataframe列,并将结果存储在两个新创建的列中。我找到了一个不雅观的方法来达到这个目的: 主要方法是: def alter_string(astring): ... return altered_string, boolean_check def _perform_mod(astring): return alter_string(astr

我有一个函数,它在某种条件下对字符串执行修改,然后返回一个包含修改后的字符串的列表,并在获得新字符串时进行布尔检查。 我想将func应用于dataframe列,并将结果存储在两个新创建的列中。我找到了一个不雅观的方法来达到这个目的:

主要方法是:

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。我需要向dataframe添加两个新列,
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\u string
函数

zip
函数创建一个元组列表,其中每个元组都是一个系列。 然后通过元组解包(
df['modified'],df['check']
),我们在dataframe中创建了全新的列


基于

请向我们提供一些示例数据,然后提供您的预期输出,以便我们可以提供任何替代方案,目前我们不知道您的代码的具体用途。谢谢您正是我要找的。工作完美无瑕。我知道zip函数。你能解释一下*运算符前面的列名吗?它与熊猫有关吗?@MicheleMontaruli“”纯粹是一个Python核心功能,在这里用于解压zip函数的参数。作为一个示例,这里它用于将apply中的每个结果元组(例如tuples“(AAAAAA,False)”和“(AAAVCD,True)”作为不同的参数进行压缩。因此,如果apply的结果是元组“(aaaaa,False)”和“(AAAVCD,True)”,其中“基本上是这样调用zip:
zip((AAAAAA,False),(AAAVCD,True))
。更好地使用此功能以完全掌握它)