![](/img/trans.png)
[英]How do I create a new column in a dataframe based on conditions of other columns?
[英]How do I create new columns to a dataframe using lambdas?
我想在此数据框中创建3个新列:
columnList = { 'hasCampaign': ( lambda x: x[ 'CAMPAIGNID' ] != '' ),
'hasLeadType': ( lambda x: x[ 'LEADTYPE' ] != '' ),
'hasEvent': ( lambda x: x[ 'EVENT' ] != '' ) }
for ( k, v ) in columnList.items():
df = df.assign( k = v )
那不行吗 我收到此错误:
KeyError: 'CAMPAIGNID'
我已验证,并且列CAMPAIGNID存在。
KeyError Traceback (most recent call last)
/usr/local/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2524 try:
-> 2525 return self._engine.get_loc(key)
2526 except KeyError:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
如何分配这3个lambda以计算这3个新列?
对我来说,省略循环并使用:
df = df.assign( **columnList )
为避免KeyError
s是可以转换的列清单,也许有些traling wtispaces问题:
print (df.columns.tolist())
对于删除列名称中的空格,请使用:
df.columns = df.columns.str.strip()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.