所以,我对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', '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)
它返回一个具有True / False值的元组。 (所以1为True,0为False我需要) 我继续在我的原始数据框中创建一个空列,然后以我有限的知识进行尝试。我希望有人可以给我指示,因为它会返回' tuple'对象不支持项目分配'错误。
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
答案 0 :(得分:0)
我认为如果将循环更改为
,您的代码将会起作用for i, row in pdb_RED.iterrows():
但是,确实不需要遍历行,您可以将新列直接分配给原始数据帧:
pdb_RED['A1_agro'] = pdb_RED['PRFLOP_A'].str.contains('[bBrA]$', regex=True)
如果你想要整数而不是布尔值,你可以在最后添加.astype(int)
。