簡體   English   中英

循環熊貓數據幀的每一行

[英]looping each row of a pandas dataframe

我有一個大的數據框,如果要滿足某個條件,我想彼此划分同一行的值,並為每個條件創建一個新列。

我嘗試了各種循環,但是我得到了一個錯誤,即序列的真值是模糊的。 我認為我接近解決方案,但我想不出最快的方法。

df = pd.DataFrame({'colA': np.random.randn(20), 'colB': np.random.randn(20), 'colC': np.random.randn(20)})
print(df)
x = 0
y = 0.5
for ix, r in df.iterrows():
    if (r['colA'] > x) & (r['colA'] < y):    
        df.loc[ix,str(y)] = df.loc[ix,'colA']/df.loc[ix,'colB']
        x += 0.5
        y += 0.5

這就是我現在所走的路。 問題是,x和y在滿足條件的每一行之后增加。 但是我需要對所有滿足條件的行進行除法,然后增加x和y。

如果希望將除法應用於所有符合條件的行,則不應使用iterrows。 這是初始代碼的固定版本:

while x <= df['colA'].max():
    sub = df.loc[(df['colA'] > x)&(df['colA'] < y)]  # filter the dataframe on both conditions
    df.loc[sub.index, str(y)] = df['colA']/df['colB']
    x += .5
    y += .5

while循環的兩個條件需要包裝在all() (或相應的pandas函數)中,以顯式檢查所得布爾數組的所有值是否為true。

暫無
暫無

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

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