簡體   English   中英

將條件值從一列復制到另一列

[英]Copy conditional values from one column to another

給定這樣的df:

Date          Category  Debit     Credit
2020-01-05    Utility   55.32     NA
2020-01-05    Movie     20.01     NA
2020-01-05    Payment   NA        -255.32
2020-01-05    Grocery   97.64     NA

如何將所有負信用值移動到借方列(並刪除空的信用列)?

Date          Category  Debit     
2020-01-05    Utility   55.32    
2020-01-05    Movie     20.01    
2020-01-05    Payment   -255.32        
2020-01-05    Grocery   97.64    

這將找到負值:

df.loc[df['Credit'] < 0]

但這不起作用(最小的 pandas 技能)

def creditmover():
    If df.loc[df['Credit'] < 0]:
        df.loc[df['Debit']]=df.loc[df['Credit']]

謝謝!

根據你的邏輯,你可以這樣做:

# where credit is < 0
s = df['Credit'] < 0

# copy the corresponding values
df.loc[s, 'Debit'] = df.loc[s, 'Credit']

# drop Credit
df = df.drop('Credit', axis=1)

Output:

         Date Category   Debit
0  2020-01-05  Utility   55.32
1  2020-01-05    Movie   20.01
2  2020-01-05  Payment -255.32
3  2020-01-05  Grocery   97.64

注意:如果在Credit <0的情況下, Debit始終為Na ,反之亦然,那么您可以簡單地執行以下操作:

df['Debit'] = df['Debit'].fillna(df['Credit'])

df = df.drop('Credit', axis=1)

我們可以做pop

df.loc[df.pop('Credit')<=0,'Debit']=df.Credit
df
         Date Category   Debit
0  2020-01-05  Utility   55.32
1  2020-01-05    Movie   20.01
2  2020-01-05  Payment -255.32
3  2020-01-05  Grocery   97.64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM