我正在使用下面的数据框,并试图根据几个条件添加一个包含注释的新列。
条件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
结果是:
<表类> 数量Ccy Mgd Ccy 花 日期 new_column tbody><<tr>2 欧元欧元Y 2021-08-18 注1 3 瑞士法郎欧元Y 2021-08-19 注2 表类>