有没有办法为给定的列选择5个特定范围内的值,并对每个不同的数据帧应用一个新列、一个标签
我的意思是,我有一个数据帧列表。所有数据帧都有2列,共享相同的第一列,但在第二列(头和值)上有所不同。例如:
>> df1
GeneID A
1 0.3
2 0.0
3 143
4 9
5 0.6
>> df2
GeneID B
1 0.2
2 0.3
3 0.1
4 0.7
5 0.4
....
我想:
对于列表上的每个数据帧,执行一个计算,给出该值在5个不同范围中的1个范围内出现的概率。用这些值附加一个新列
对于列表上的每个数据帧,在另一个新列中附加相应的范围标签
其中范围为:
*Range_Values* -> *Range_Label*
**[0]** -> 'l1'
**]0,1]** -> 'l2'
**]1,10]** -> 'l3'
**]10,100]** -> 'l4'
**>100** 'l5'
这两个步骤将导致如下结果:
>> list_dfs[df1]
GeneID A Prob_val Exp_prof
1 0.3 0.4 'l2'
2 0.0 0.2 'l1'
3 143 0.2 'l5'
4 9 0.2 'l3'
5 0.6 0.4 'l2'
你必须先定义箱子和标签-
然后使用^{} -
在
pd.cut()
中有一个labels
参数,可以用来获取标签-你可以用生成的
bins
来计算概率,我让你自己来做您可以对循环中其余的
dfs
执行此操作,最后将它们分配给一个列表-如果有动态数
dfs
,请使用循环-框架
对于标签和箱子,可以使用
pandas.cut
。请注意,在这个函数中不能使用单例作为bin。因此,您必须在以后创建它。你可以这样做首先,我重新创建一个数据帧:
然后我创建新列并用标签
l1
填充NaN
值,该标签对应于单例[0]
我用这个新的列来计算概率:
输出为:
相关问题 更多 >
编程相关推荐