猿问

如何重塑/“推翻”熊猫数据框

Topple 很可能是我想要的操作的错误名称,但我想不出更好的名称。


我有 N 个形状为 (100,3) 的数据框,原始数据框的每一行都是测试的名称及其产生的两个结果。我想将单个数据帧重塑为 (1,200) 形状,并将所有测试值作为一行。之后,我会将所有 N 个数据帧附加到一个中,以 (N,200) 个数据帧结尾。


这是一个带有虚拟数据的示例:


import pandas as pd

import numpy as np

import random

import string


np.random.seed(42)

tests = np.random.choice(list(string.ascii_letters),size=(100,1))

results = np.random.randint(0,100,size=(100, 2))

df = pd.DataFrame(np.concatenate([tests, results], axis=1), columns=["Test Name", "ValueA", "ValueB"])

toppled_df = pd.DataFrame(np.random.randint(0,100,size=(1,5)),columns=["Z Value A", "Z ValueB", "t ValueA", "t ValueB", "..."])

toppled_df = pd.DataFrame([[44,64,88,70,"..."]],columns=["M Value A", "M ValueB", "Z ValueA", "Z ValueB", "..."])

toppled_df.head()


GCT1015
浏览 184回答 3
3回答

慕丝7291255

可以熔df成长格式,加入测试名称和值类型列,然后转置。tests = np.random.choice(list(string.ascii_letters),size=(100,1))results = np.random.randint(0,100,size=(100, 2))df = pd.DataFrame(np.concatenate([tests, results], axis=1),                   columns=["Test Name", "ValueA", "ValueB"])df2['key'] = df['Test Name'] + ' ' + df['variable']df2['key'] = df2['Test Name'] + ' ' + df2['variable']df2[['key', 'value']].set_index('key').T循环遍历每个数据帧以创建融合的数据帧,然后进行连接。

鸿蒙传说

df2 = df.set_index('Test Name').unstack()result = pd.DataFrame(data=df2.values.reshape(1,-1), columns=df2.index)输出:>>> result          ValueA                                                 ... ValueB                                                 Test Name      M   Z  C  o   Q   h  u   M  s   w   k   k   x   J ...      w   N   u  p   S  r   U   x   z   y   S  O   C   o0             44  88  8  0  87  10  7  34  4  27  72  11  32  22 ...     49  30  41  6  89  1  47  68  31  98  47  2  23  32您可以像这样访问单个结果:result['ValueA', 'M']# orresult['ValueA']['M']

神不在的星期二

一种更pythonic的方式df_out = df.set_index('Test Name').stack().to_frame().Tdf_out.columns = df_out.columns.map(' '.join).str.strip()
随时随地看视频慕课网APP

相关分类

Python
我要回答