簡體   English   中英

在 dataframe 行中查找值變為負數的位置並返回相應的列

[英]Find where values becomes negative in dataframe row and return corresponding column

我有一個看起來像這樣的 dataframe:

      1     2     3     4     5     6     7      8     9
0     2     1     -1    -2    -3    -2    -1     0     1

我需要返回值變為負數和再次變為正數的列。

它與此問題類似,但列和行倒置: Pandas: select 第一個不再為負的值,返回行

關於簡單方法的任何想法?

預期 output 將返回其更改的列號,如下所示:

neg = 3
pos = 8

pandas + numpy解決方案。 查找符號變化np.sign(df1).diff().ne(0)

df = df.replace(0,np.inf)
df1 = df.T
t = df1[np.sign(df1).diff().ne(0)[1:]]
s = (t>0)
pos = [*filter(s[0].get, s.index)]
s = (t<0)
neg = [*filter(s[0].get, s.index)]

位置:

['8']

否定:

['3']

對於每一行:

def get_pos_neg(row):
    t = row[np.sign(row).diff().ne(0)]#[1:]
    print(t)
    s = (t>0)
    pos = [*filter(s.get, s.index)]
    s = (t<0)
    neg = [*filter(s.get, s.index)]
    return pos,neg
  
df = df.replace(0,np.inf)
df1 = df.T
df1.apply(get_pos_neg,0)

暫無
暫無

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

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