重新获得pandas和numpy中丢失的行和列名称

时间:2019-11-13 13:09:48

标签: python pandas

我正在使用熊猫来操纵我的文件(其中每一行都有一个名称,因为行名不是单独的列,而列也有名称)并执行下游分析。在此过程中,我必须使用numpy将值转换为对数,然后再次将numpy数组转换为熊猫dataframe。但是在此过程中,我将同时删除列名和行名。 这是我所做的:

df = pd.read_table(infile, index_col=0)
df2 = np.log2(np.array(df))
df3 = pd.DataFrame(df2)

将列名添加到熊猫dataframe中,我使用了以下代码:

colname = list(df.columns)
df3.columns = colname

但是我没有设法将行名添加到新的dataframe中。你知道怎么做吗?

这是输入数据(df):

    ABC20190124 ABC20190156
CCNO    61.300048   1.865438
MYC 7949.585246 2229.654372
CD79A   0.954767    1223.411451

这是我得到的输出(df3):

    0   1
0   5.9378  0.8995
1   12.9566 11.1226
2   -0.0667 10.2566

这是预期的输出:

    ABC20190124 ABC20190156
CCNO5.9378  0.8995
MYC 12.9566 11.1226
CD79A   -0.0667 10.2566

1 个答案:

答案 0 :(得分:1)

我认为这里没有必要转换为numpy数组,仅适用于df

df = pd.read_table(infile, index_col=0)
df3 = np.log2(df)

您的解决方案应使用index构造函数中的columnsDataFrame参数进行更改:

df = pd.read_table(infile, index_col=0)
df2 = np.log2(np.array(df))
df3 = pd.DataFrame(df2, index=df.index, columns=df.columns)

示例

df = pd.DataFrame({'A':[4,5,4], 'B':[7,8,9]})
df3 = np.log2(df)
print (df3)
          A         B
0  2.000000  2.807355
1  2.321928  3.000000
2  2.000000  3.169925