Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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_Dataframe_Calculated Columns - Fatal编程技术网

Python 按条件添加列

Python 按条件添加列,python,pandas,dataframe,calculated-columns,Python,Pandas,Dataframe,Calculated Columns,我有以下数据框: import pandas as pd data = {"A1": [22,25,27,35], "A2": [23,54,71,52], "A3": [21,27,26,31], "A1_L1": [21,27,26,31], "A1_L2": [21,27,26,31], "A2_L1

我有以下数据框:

import pandas as pd

data = {"A1": [22,25,27,35],
        "A2": [23,54,71,52],
        "A3": [21,27,26,31],
        "A1_L1": [21,27,26,31],
        "A1_L2": [21,27,26,31],
        "A2_L1": [21,27,26,31],
        "A3_L1": [21,27,26,31],
        "A3_L2": [21,27,26,31],
        "A3_L3": [21,27,26,31]
        }
df = pd.DataFrame(data, columns = ["A1", "A2","A3","A1_L1","A1_L2","A2_L1","A3_L1","A3_L2","A3_L3"])
我想为每列自动添加一个新列,其中包含一个L。此列中的信息将是减法列A-A\L

比如说,

A1_L1_new=A1-A1_L1 
A1_L2_new=A1-A1_L2  
A2_L1_new=A2-A2_L1
A3_L1_new=A3-A3_L1
A3_L2_new=A3-A3_L2
A3_L3_new=A3-A3_L3

任何帮助都将不胜感激。

首先,导入库正则表达式:

重新导入
然后,将列的名称作为列表

colu name=df.columns.tolist()
  • 对于每个列名,检查其中是否有L
  • 如果存在,用正则表达式A和L分开
  • 然后根据这些As和Ls创建字符串
  • 最后,用我们刚刚创建的字符串名创建列,并减去相应的A和L的列
  • 对于列名称中的i:
    如果i:#中有“L”,则检查名称是否包含“L”
    x=[x.group()代表re.finditer中的x(r'[A,L][1-9]',i)]#将'A'和'L'放在列表中
    foo=str(x[0])+“-”+str(x[1])+“_new”#基于“A”和“L”创建新名称
    df[foo]=df[x[0]]-df[i]#减去相应的列。
    df
    
    如果您想知道正则表达式的作用:

    • [A,L]查找以A或L开头的匹配项
    • [1-9]匹配任何数字。(您也可以改为写入与任何数字匹配的\d

    您尝试过什么?什么不适合你?这能回答你的问题吗?