Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从数据帧中的字符串表达式创建虚拟列?_Python_Pandas - Fatal编程技术网

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

所以,我对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)
它返回一个具有真/假值的元组。(因此我需要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)

谢谢,单行解决方案可以很好地完成这项工作。