python - 如何用不同的变量在 pd.DataFrame 中形成另一个列
问题描述
我正在尝试通过在其他变量中具有多个条件的 if 语句来创建一个新的布尔变量。但到目前为止,我的许多尝试甚至都不能使用变量作为参数。
如果你们中的任何人都能看到这个问题,我将不胜感激,我已经在整个万维网上搜索了两天。但作为初学者,我还没有找到解决方案。
amount = df4['AnzZahlungIDAD']
time = df4['DLZ_SCHDATSCHL']
Erstr = df4['Schadenwert']
Zahlges = df4['zahlgesbrut']
timequantil = time.quantile(.2)
diff = (Erstr-Zahlges)/Erstr*100
diffrange = [(diff <=15) & (diff >= -15)]
special = df4[['Taxatoreneinsatz', 'Belegpruefereinsatz_rel', 'IntSVKZ', 'ExtTechSVKZ']]
第一种方法与列表理解
label = []
label = [True if (amount[i] <= 1) & (time[i] <= timequantil) & (diff == diffrange) & (special == 'N') else False for i in label]
label
使用 iterrows() 的第二种方法
df4['label'] = pd.Series([])
df4['label'] = [True if (row[amount] <= 1) & (row[time] <= timequantil) & (row[diff] == diffrange) & (row[special] == 'N') else False for row in df4.iterrows()]
df4['label']
Lambda 函数的第三种方法
df4.loc[:,'label'] = '1'
df4['label'] = df4['label'].apply([lambda c: True if (c[amount] <= 1) & (c[time] <= timequantil) & (c[diff] == diffrange) & (c[special]) == 'N' else False for c in df4['label']], axis = 0)
df4['label'].value_counts()
我希望我在我的数据框 df4 中得到一个变量“标签”,它是真还是假。
更少的尝试只给了我所有值 = False 或 all = True 即使我只使用了一个参数,这在数据上是不可能的。
第一种方法运行良好,但输出:[]
第二种方法给了我以下错误:TypeError: tuple indices must be integers or slices, not Series
第三种方法根本不加载。
解决方案
IIUC,试试这个
time = df4['DLZ_SCHDATSCHL']
Erstr = df4['Schadenwert']
Zahlges = df4['zahlgesbrut']
# timequantil = time.quantile(.2)
diff = (Erstr-Zahlges)/Erstr*100
df4['label'] = (df4['AnzZahlungIDAD'] <= 1) & (time <= time.quantile(.2)) & (diff <=15) & (diff >= -15) & (df['Belegpruefereinsatz_rel'] =='N') & (df['Taxatoreneinsatz'] =='N') & (df['ExtTechSVKZ'] =='N') & (df['IntSVKZ'] =='N')
鉴于您的数据集,我得到以下输出
Anz dlz sch zal taxa bel int ext label
0 2 82 200 253.80 N N N J False
1 2 82 200 253.80 N N N J False
2 1 153 200 323.68 N J N N False
3 1 153 200 323.68 N J N N False
4 1 191 500 1252.12 N J N N False
注意:不要介意列名中使用的缩写
推荐阅读
- swift - 如何让 VoiceOver 读出与 UITextView 不同的文本?
- python - Python/fbprophet - 如何适应季节
- oracle - 如何根据状态连接表记录?
- ios - 如何在 UITableViewCell 上突出显示 UIButton
- javascript - Change color only the selected option but not all options in dropdown
- javascript - 在没有 try/catch 的情况下检查 CosmosDB 项是否存在
- python - Count the number of cells with red text in excel file using xlrd in python
- java - Status code 400 when sending a Post request in json format
- java - 更新产品数量(自定义属性)时出现 OCAException
- visual-studio - Visual Studio 解决方案和 TFS