Python 数据帧中的条件变化
我想更改days列,该列是以indicator列为条件的datetime列,即当indicator等于DTM或AMC时,我想在days列中添加1天Python 数据帧中的条件变化,python,pandas,datetime,Python,Pandas,Datetime,我想更改days列,该列是以indicator列为条件的datetime列,即当indicator等于DTM或AMC时,我想在days列中添加1天 import pandas as pd df = pd.DataFrame({'days': [1, 2, 3], 'indicator': ['BMO', 'DTM','AMC']}) 结果如下所示: days indicator 0 1 BMO 1 3 DTM 2
import pandas as pd
df = pd.DataFrame({'days': [1, 2, 3],
'indicator': ['BMO', 'DTM','AMC']})
结果如下所示:
days indicator
0 1 BMO
1 3 DTM
2 4 AMC
使用:
输出
作为替代方案,您可以使用:
您可以直接添加布尔掩码,因为在Python中,布尔值是整数0,1。使用:
输出
作为替代方案,您可以使用:
您可以直接添加布尔掩码,因为在Python中,布尔值是整数0,1。使用np。其中isin:
将np.where与isin一起使用:
使用:
或:
输出
使用:
或:
输出
另外,非常有用,将此添加到我的作弊列表中,谢谢!!另外,非常有用,将此添加到我的作弊列表中,谢谢!!
df['days'] += (df.indicator.eq('AMC') | df.indicator.eq('DTM'))
print(df)
days indicator
0 1 BMO
1 3 DTM
2 4 AMC
df['days'] += df.indicator.isin(('AMC', 'DTM'))
print(df)
df['days'] = np.where(df['indicator'].isin(['DTM', 'AMC']), df['days'].add(1), df['days'])
days indicator
0 1 BMO
1 3 DTM
2 4 AMC
df['days']=df['days'].mask(df['indicator'].isin(['DTM','AMC']),df['days']+1)
df['days']=df['days'].where(~df['indicator'].isin(['DTM','AMC']),df['days']+1)
#print(df)
days indicator
0 1 BMO
1 3 DTM
2 4 AMC