所以这是我正在尝试做的类似情况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
提交
取消