在文本文件中转换值并在python中制作新的文本文件

时间:2019-08-29 21:33:08

标签: python-3.x pandas file

我有一个像这样的文本文件:

示例:

"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的值,但不会返回具有相同结构的文件。你知道如何解决吗?

1 个答案:

答案 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数组时会删除索引)