我有一个脚本可以为我做事,但效率很低。我要求代码审查人员提供一些帮助,并被告知要尝试使用熊猫。这就是我所做的,但我很难理解它是如何工作的。我试着在这里阅读文档和其他问题,但我找不到任何答案。熊猫:从一行中选择多列
所以,我有一个数据帧与少量的行(20到几百)和较少的列数。我已经使用了read_table大熊猫函数来获取在.TXT格式的原始数据,它看起来像这样:
[ID1, Gene1, Sequence1, Ratio1, Ratio2, Ratio3]
[ID1, Gene1, Sequence2, Ratio1, Ratio2, Ratio3]
[ID2, Gene2, Sequence3, Ratio1, Ratio2, Ratio3]
[ID2, Gene3, Sequence4, Ratio1, Ratio2, Ratio3]
[ID3, Gene3, Sequence5, Ratio1, Ratio2, Ratio3]
...有一大堆无关紧要的列一起。
我希望能够做的是从每个序列中选择所有比率,并对它们进行一些计算和统计(每个序列的所有3个比率,即)。我试过
df.groupby('Sequence')
for col in df:
do something/print(col)/print(col[0])
......但这只会让我更困惑。如果我通过打印(col),我会打印某种df结构,而如果我通过打印(col [0]),我只能得到序列。据我可以在构造中看到,我应该仍然有所有其他列和他们的数据,因为groupby()不会删除任何数据,它只是通过一些输入列分组。我究竟做错了什么?
虽然我还没有得到那么多,但由于上述问题,我还希望我的脚本能够为每个ID选择所有比率并对它们执行相同的计算,但这次每个比率都是由本身(即ID1的所有行的Ratio1,Ratio2的相同等)。最后,为每个基因做同样的事情。
编辑:
所以,说我想执行的行中的每一个比这个计算,然后取这三个结果值的中位数:
df[Value1] = spike[data['ID']]/float(data['Ratio 1]) * (10**-12) * (6.022*10**23)/(1*10**6)
df[Value2] = spike[data['ID']]/float(data['Ratio 2]) * (10**-12) * (6.022*10**23)/(1*10**6)
df[Value3] = spike[data['ID']]/float(data['Ratio 3]) * (10**-12) * (6.022*10**23)/(1*10**6)
...其中尖峰一个字典,并且这些键是这些ID。忽略字典部分,我可以进行计算(谢谢!),但是如何使用数据框ID访问字典?使用上面的代码,我只是得到一个“不可能的类型:系列”错误。
下面是一些真实的数据:
ID Gene Sequence Ratio1 Ratio2 Ratio3
1 KRAS SFEDXXYR 15.822 14.119 14.488
2 KRAS VEDAXXXLVR 9.8455 8.9279 16.911
3 ELK4 IEXXXCESLNK 15.745 7.9122 9.5966
3 ELK4 IEGXXXSLNKR 1.177 NaN 12.073
您可以给出一个很小但具有实际数据的样本数据集吗?所以我们可以尝试这些功能。 – joris