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()
对于列名称中的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)