所以這是我正在嘗試做的類似情況data = pd.read_csv(data)df = pd.DataFrame(data)print(df)數據框如下所示 ... 'd1' 'd2' 'd3... 'd13' 0 ... 0 0 0... 0 1 ... 0 0.95 0... 0 2 ... 0 0.95 0.95... 0依此類推,基本上我想選擇我的數據框的最后 13 列,并計算每行有多少大于某個值,然后將其附加到我的數據框中。我想一定有一個簡單的方法,我一直在嘗試使用df.iloc[:, 21:]作為我感興趣的第一列從這里開始,但是從這一點開始,我覺得卡住了。我一直在嘗試許多不同的方法,例如criteria和 for 循環。我知道這是一件微不足道的事情,但我已經花了幾個小時。任何幫助將非常感激。for x in df: a = df.iloc[:,21:].values() if a.any[:, 12] > 0.9: a[x] = 1 else: a[x] = 0sumdi = sum(a)df.append(sumdi)
2 回答

繁花不似錦
TA貢獻1851條經驗 獲得超4個贊
是的,您會想要應用逐行函數。
# Select subset of columns
cols = df1.iloc[:, -13:].columns
# Create new column based on conditions that value is greater than 1
df1['new'] = df1[cols].apply(lambda x: x > 1, axis=1).sum(axis=1)
在幕后,這與@jezrael 的回答相同,只是語法略有不同。 gt()正在被應用的 lambda 取代。這只是為您的邏輯更復雜的其他條件/情況提供了更大的靈活性。
注意:axis=1是確保每行應用您的函數的重要條件。您可以更改為axis=0逐列執行。
添加回答
舉報
0/150
提交
取消