我有一个数据框,如下所示
我需要将那些以Distance*开头的列转换成数据类型integer(目前它们是字符串格式),然后进一步过滤这些列。你知道吗
我可以这样做,分别为每一列,但我的数据帧是大的,有许多这些列
a.Distance0=a.Distance0.astype(int)
a.Distance1=a.Distance1.astype(int)
在这之后,我还需要根据以距离开始的列过滤掉这些行,并得到两列作为输出,因此我要从输入数据帧中得到的最终输出是
Head1 Header Dis
ABC SAP 115590
ABC GRN 426250
KLM DSQ 120001
我试着用下面的代码来实现这一点,也就是说,我正在过滤那些以Distance>;=100000开头的行,我只需要上面提到的那些具有三列值的行。 这是我尝试过的,但是这个解决方案给出了所有列
a.loc[a[a[a.columns[pd.Series(a.columns).str.startswith('Distance')]] >= 100000].dropna(how='all', axis=0).index]
但它给出了结果,但我得到的行和列都是这样的
RNA PC NA PC0 Strand0 Distance0 PC1 Strand1 Distance1
RP11 RNF223 (+11559), AGRN (+42625) 0 RNF223 + 115590 AGRN + 42625
RP13 CORT (-19440), APITD1 (+177) 0 CORT - 254880 APITD1 + 177
任何帮助或建议都会非常好。!!!你知道吗
注意,我已经将您的第一个Head1列重命名为Header(您的示例中有重复的列)。你知道吗
我的数据帧设置与你的不同,但足够接近。我没有填写与问题无关的栏目。你知道吗
这是我的设置代码:
给出了与您的示例类似的数据:
这是做这项工作的代码。其主要思想是提取Headx和Distancex列,并简单地将它们堆叠在彼此的顶部。然后将Distance的数据类型更改为int,并且只保留Distance>;=100000的行。你知道吗
它给出:
下次你问问题的时候,不要对潜在的回答者太苛刻。提供设置代码!!!你知道吗
您将不得不稍微修改这个解决方案,使之与实际的列名保持一致,由于存在重复列名的问题,我不确定实际应该调用什么。嗯!你知道吗
如果要更改以
Distance
开头的每个列的类型,可以使用循环:然后创建一个连接不同距离值的数据帧:
(请注意,这意味着您的列名格式良好,您可能必须使其适应
append
中的实际名称)然后过滤:
这可能在第一次尝试数据帧时不起作用,因为我假设您的数据帧列(只有我们感兴趣的列)的调用方式如下:
等等。。。(再说一次,我们不关心其他列,因为它们不会干扰此代码)
相关问题 更多 >
编程相关推荐