我有以下CSV格式的数据表:
Dilution Lotus1 Lotus2 Lotus3 Lotus5 Lotus6a Lotus6c Lotus7 Lotus8
0 1.301030 0.7769 0.1884 0.3076 0.3066 1.5722 2.1263 0.3414 1.3695
1 1.778151 0.3767 0.2567 0.1872 0.1902 1.1285 1.9726 0.2267 0.7549
2 2.301030 0.2267 0.2049 0.1454 0.1483 0.6637 1.7816 0.1720 0.4223
3 2.778151 0.1519 0.1507 0.1194 0.1174 0.3244 1.4958 0.1452 0.2062
4 3.301030 0.1234 0.1256 0.1270 0.1440 0.2273 1.3553 0.1383 0.1705
5 3.778151 0.1151 0.1190 0.1166 0.1143 0.1402 0.7333 0.1218 0.1295
6 4.301030 0.1213 0.1219 0.1201 0.1209 0.1335 0.4217 0.1241 0.1279
7 4.778151 0.1145 0.1181 0.1144 0.1196 0.1205 0.2609 0.1259 0.1219
我使用trapz(x,y)
函数计算了8个Lotus样本中每个样本的曲线下面积(AUC):
from numpy import trapz
x = (elisa.Lotus1, elisa.Lotus2, elisa.Lotus3, elisa.Lotus5, elisa.Lotus6a, elisa.Lotus6c, elisa.Lotus7, elisa.Lotus8)
y = (elisa.Dilution)
AUC = trapz(x,y)
[0.77020294 0.56251883 0.50852258 0.51922454 1.71261157 4.44964193
0.57552938 1.26143932]
现在,由于我是python初学者,我在这里所做的是手动输入x轴所有列的名称,所以我的问题是:告诉python将相同的函数批量应用于一系列列(如列2-9或Lotus1-Lotus8)的语法是什么?我在绘图时也遇到同样的问题,因为我使用了以下代码:
import matplotlib.pyplot as plt
plt.style.use('ggplot')
x = ('elisa.Lotus1', 'elisa.Lotus2', 'elisa.Lotus3', 'elisa.Lotus5', 'elisa.Lotus6a', 'elisa.Lotus6c', 'elisa.Lotus7', 'elisa.Lotus8')
y = (0.77020294, 0.56251883, 0.50852258, 0.51922454, 1.71261157, 4.44964193, 0.57552938, 1.26143932)
我已经浏览了网页,但还没有找到专门帮助我解决这个问题的资源,而且我有数百个专栏要处理,所以这段代码非常方便
有人知道怎么做吗
有很多方法可以做到这一点,但它需要一个列表
第一种方法:使用
df.columns
。这将返回一个列表,其中包含您可以切片或使用的所有列名,就像您经常使用列表一样第二种方法:使用
list(df)
。与之前类似,这将返回一个列表,其中包含dataframe中所有列的名称第三种方法:列表理解:[x代表df中的x]返回一个包含df中所有列名称的列表,作为交换,这更灵活,允许过滤。例如,在您的案例中,如果希望保留以Lotus开头的列,可以执行以下操作:
最后,考虑到您似乎正在尝试将数据集拆分为包含
Lotus
和目标列Dilution
的列,您可以使用pandas.drop()
函数:对于前三种情况,您可以简单地将列表传递给数据帧、过滤列或使用
loc
例如:
另一个使用
df.columns
+切片的示例:尝试添加
axis = 0
相关问题 更多 >
编程相关推荐