Python 如何从数据帧中的字符串表达式创建虚拟列?
所以,我对python还很陌生,这是我第一篇关于堆栈溢出的文章 所以我在数据框中有一列,包含扑克手中的动作,缩写为字母Python 如何从数据帧中的字符串表达式创建虚拟列?,python,pandas,Python,Pandas,所以,我对python还很陌生,这是我第一篇关于堆栈溢出的文章 所以我在数据框中有一列,包含扑克手中的动作,缩写为字母 pdb_RED.PRFLOP_A.unique() array(['BrA', 'Brf', 'Bk', 'f', 'Bc', 'r', 'Bf', 'c', 'B', 'Br', 'cc', 'Bcf', 'Bcc', 'BcrA', 'Brc', 'BQ', 'Brr', 'rf', 'rc', 'BrQ', 'BcA', 'cr', 'cf', 'Q', 'f
pdb_RED.PRFLOP_A.unique()
array(['BrA', 'Brf', 'Bk', 'f', 'Bc', 'r', 'Bf', 'c', 'B', 'Br', 'cc',
'Bcf', 'Bcc', 'BcrA', 'Brc', 'BQ', 'Brr', 'rf', 'rc', 'BrQ', 'BcA',
'cr', 'cf', 'Q', 'fQ', 'BKQ', 'rr', 'BrcA', 'rrc', 'Bcr', 'BcQ',
'BA', 'rQ', 'BfQ', 'rA', 'KQ', 'rrA'], dtype=object)
我想在我的数据帧中创建一个新列,如果表达式在列中匹配,则该列包含1的伪变量,其他所有内容都包含0。表达方式:
A1_agro=pdb_RED['PRFLOP_A'].str.contains('[bBrA]$', regex=True)
它返回一个具有真/假值的元组。(因此我需要1表示真,0表示假)
我继续在原始数据框中创建一个空列,然后用我有限的知识进行尝试。我希望有人能给我指点方向,因为它返回“tuple”对象不支持“item assignment”错误
pdb_RED['PRFLOP_agro']=np.nan
for row in pdb_RED.iterrows():
if A1_agro[1]==True:
row['PRFLOP_agro']=1
else:
row['PRFLOP_agro']=0
我认为如果将循环更改为
for i, row in pdb_RED.iterrows():
但是,实际上不需要遍历行,您可以将新列直接分配给原始数据帧:
pdb_RED['A1_agro'] = pdb_RED['PRFLOP_A'].str.contains('[bBrA]$', regex=True)
如果您想要整数而不是布尔值,您可以在末尾添加
.astype(int)
。谢谢,单行解决方案可以很好地完成这项工作。