添加列条目,如果特定日期,Pandas



我正在使用下面的数据框,并试图根据几个条件添加一个包含注释的新列。

条件1:Spend = Y 条件2:Ccy= Mgd Ccy

条件3:如果日期是今天+1,在备注栏中添加"备注1",如果日期是今天+2,在备注栏中添加"备注2">

任何帮助都很感激x

dataframe

首先,您需要确保日期列是datetime:

data['Date'] = pd.to_datetime(data['Date'])

然后,减去所需的日期并添加提取天数差异:

data['Differences'] = (data['Date'] - pd.Timestamp('today')).dt.days

最后,使用data.loc[conditions, column_name]的一般格式执行一些条件选择:

data.loc[(data['Spend'] == 'Y') & (data['Ccy'] == data['Mgd Ccy']),
'notes'] = data['Differences'].apply(lambda x: 'Note ' + str(x))

你可以试试:

import pandas as pd
import numpy as np
df = pd.DataFrame({'Amount': [1, 2, 3], 'Ccy': ['EUR', 'EUR', 'CHF'], 'Mgd Ccy': ['EUR', 'EUR', 'EUR'], 'Spend': ['Y', 'Y', 'Y'], 'Date':pd.date_range("2021-08-17", periods=3, freq="D")})
df = df[(df['Date'] == (pd.datetime.now() + timedelta(days=1)).strftime("%Y/%m/%d")) | (df['Date'] == (pd.datetime.now() + timedelta(days=2)).strftime("%Y/%m/%d") ) ]
df['new_column'] = np.where((df.Spend == 'Y') & (df['Ccy'] == df['Mgd Ccy']) & (df['Date'] == (pd.datetime.now() + timedelta(days=1)).strftime("%Y/%m/%d")), 'Note 1', 'Note 2')
df

结果是:

<表类>数量CcyMgd Ccy花日期new_columntbody><<tr>2欧元欧元Y2021-08-18注13瑞士法郎欧元Y2021-08-19注2

相关内容

  • 没有找到相关文章

最新更新