簡體   English   中英

Pandas Dataframe:基於正/負值分配給不同的列

[英]Pandas Dataframe: assign to different columns based on positive/negative values

我要實現的目標如下:

   a  b  c
0  1  0  0
1 -1  0  0

在上述數據幀中,對於a列,對於正數行,分配給b列中的相應行,對於負數,分配給c列:

   a  b  c
0  1  1  0
1 -1  0 -1

我現在正在使用以下代碼,但是有什么方法可以用一行而不是兩行來編寫?

import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1, -1], 'b':[0, 0], 'c':[0,0]})
df.b = np.where(df.a > 0, df.a, df.b)
df.c = np.where(df.a < 0, df.a, df.c)

我想使用np.where就可以了,如果您希望它們位於一條標志線中

s=df.assign(key=['b','c']).set_index('key',append=True).unstack().sum(level=1,axis=1)
s
key    b    c
0    1.0  0.0
1    0.0 -1.0
df.update(s)
df
   a    b    c
0  1  1.0  0.0
1 -1  0.0 -1.0

我開始寫

df.b, df.c = (df.a > 0)*df.a + (df.a < 0)*df.b, (df.a < 0)*df.a +  (df.a > 0)*df.c

然后意識到您可以完全按照自己的方式進行拆包。 我想有很多方法可以使您以更晦澀的方式完成此任務

暫無
暫無

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

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