恢复pandas和numpy中丢失的行和列名

2024-09-22 14:25:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

要将列名添加到pandasdataframe,我使用了以下代码:

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

Tags: columnsnumpy名称dataframedf过程nppd
1条回答
网友
1楼 · 发布于 2024-09-22 14:25:47

我认为这里不需要转换为numpy数组,只需使用df

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

应使用DataFrame构造函数中的indexcolumns参数更改您的解决方案:

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

相关问题 更多 >