我有一个像这样的文本文件:
示例:
"class" "Name" "Access" "CF33456_12.RCC" "CF33457_05.RCC" "CF33458_04.RCC"
"ff" "edi" "ff" "kju" 2444.91910958478 1669.55827263364 699.627215729572
"gg" "edi" "gg" "uhy" 2002.95278984564 369.565070720533 351.056685823175
此文件中有6列(基于标题),所以第一列是行名。我想将数字(最后3列)更改为log2值,并制作一个结构完全相似的新文件。这是预期的输出:
预期输出:
"class" "Name" "Access" "CF33456_12.RCC" "CF33457_05.RCC" "CF33458_04.RCC"
"ff" "edi" "ff" "kju" 11.2555710189065 10.7052507333626 9.45044260143907
"gg" "edi" "gg" "uhy" 10.9679127014901 8.52968459728736 8.45556019395986
我是tryint,使用以下代码在python中做到这一点:
df = pd.read_table("myfile.txt", index_col=0)
import numpy as np
df2 = df.iloc[:, [3,4,5]]
df3 = np.array(df2)
df4 = np.log2(df3)
final = pd4.DataFrame(df4)
它将转换为log2
的值,但不会返回具有相同结构的文件。你知道如何解决吗?
答案 0 :(得分:0)
在您的示例中,可以使用以下代码来更改原始数据框(具有输入表的结构):
df = pd.read_table("myfile.txt", index_col=0)
import numpy as np
df2 = df.iloc[:, [3:5]]
df3 = np.array(df2)
df4 = np.log2(df3)
df.iloc[:, [3:5]] = df4
final = df
(很明显df4
具有另一种格式-它是表的一部分,并且在转换为numpy数组时会删除索引)