gpt4 book ai didi

python-3.x - 标记默认月份 - python pandas

转载 作者:行者123 更新时间:2023-12-02 02:21:15 25 4
gpt4 key购买 nike

我有一个像这样的 pandas 数据框:

pd.DataFrame({
'customer_id': ['100', '200', '300', '400', '500', '600'],
'Month1': [1, 1, 1, 1, 1, 1],
'Month2': [1, 0, 1, 1, 1, 1],
'Month3': [0, 0, 0, 0, 1, 1],
'Month4': [0, 0, 0, 0, 0, 1]})

这显示了客户拖欠贷款时的 bool 值。第一个月为 0 表示客户该月违约。我想要一个显示客户拖欠贷款的月份号的输出。输出:

pd.DataFrame({
'customer_id': ['100', '200', '300', '400', '500', '600'],
'Month1': [1, 1, 1, 1, 1, 1],
'Month2': [1, 0, 1, 1, 1, 1],
'Month3': [0, 0, 0, 0, 1, 1],
'Month4': [0, 0, 0, 0, 0, 1],
'default_month': [3, 2, 3, 3, 4, np.nan]})

最佳答案

您可以使用all(axis=1)检查一行中的所有“月份”列是否不为0。和 ne(0)并返回 np.nan 这意味着该人尚未违约(即您的第 5 行)。

然后使用 eq(0)idxmax您可以检查哪一个是等于 0 的行的第一个值并获取该列名称。

import numpy as np

m = df.filter(like='Month')
df['default_month'] = np.where((m.ne(0)).all(1),np.nan,
m.eq(0).idxmax(1))

df

customer_id Month1 Month2 Month3 Month4 default_month
0 100 1 1 0 0 Month3
1 200 1 0 0 0 Month2
2 300 1 1 0 0 Month3
3 400 1 1 0 0 Month3
4 500 1 1 1 0 Month4
5 600 1 1 1 1 NaN

关于python-3.x - 标记默认月份 - python pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66393555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com