我在熊猫身上有一个DataFrame
,看起来像这样:
transactions_df = pd.DataFrame({'Date': ['2019-08-01', '2019-09-01', '2019-10-01'], 'Amount': [150, -25, 200]})
transactions_df.head()
Date Amount
2019-08-01 150
2019-09-01 -25
2019-10-01 200
我想将amount列拆分为Invoiced
和Reimbursed
,如果值分别为正或负
我现在是这样做的:
def split_trans_amount(row):
invoiced = row['Amount'] if row['Amount'] > 0 else 0
reimbursed = row['Amount'] if row['Amount'] < 0 else 0
return pd.Series([invoiced, reimbursed], index=['Invoiced', 'Reimbursed'])
transactions_in_out_df = transactions_df.apply(lambda x: split_trans_amount(x), axis=1)
transactions_split_df = pd.concat([transactions_df, transactions_in_out_df], axis=1)
transactions_split_df.head()
它给了我所需要的:
Date Amount Invoiced Reimbursed
2019-08-01 150 150 0
2019-09-01 -25 0 -25
2019-10-01 200 200 0
但是,难道没有一种更简单的方法可以在熊猫身上做到这一点吗
您可以在这里使用
np.clip(..)
:这给了我们:
同样有效
相关问题 更多 >
编程相关推荐