如何将我的 2D numpy 数组转换为具有给定类别的 Pandas 数据框?

我有一个名为“值”的数组,其中包含来自 10 个人的 2 列平均反应时间数据。第一列指的是为条件 A 中的单个个体收集的数据,第二列是为条件 B 中的同一个体收集的数据:


array([[451.75      , 488.55555556],

   [552.44444444, 590.40740741],

   [629.875     , 637.62962963],

   [454.66666667, 421.88888889],

   [637.16666667, 539.94444444],

   [538.83333333, 516.33333333],

   [463.83333333, 448.83333333],

   [429.2962963 , 497.16666667],

   [524.66666667, 458.83333333]])

我想使用 seaborn 绘制这些数据,以显示两个条件下每个人的平均值和连接的单个值。将数组“值”转换为 3 列 DataFrame 的最简单方法是什么,其中一列具有所有值,另一列具有将该值区分为条件 A 或条件 B 的标签,以及为每个值提供数字的最后一列个人(即 1-10)?例如,如下:


Value    Condition    Individual

451.75   A            1

488.56   B            1

488.55   A            2

...等等


墨色风雨
浏览 146回答 2
2回答

慕沐林林

melt你可以使用pd.melt:pd.DataFrame(data, columns=['A','B']).reset_index().melt(id_vars = 'index')\    .rename(columns={'index':'Individual'}) Individual variable       value0            0        A  451.7500001            1        A  552.4444442            2        A  629.8750003            3        A  454.6666674            4        A  637.1666675            5        A  538.8333336            6        A  463.8333337            7        A  429.2962968            8        A  524.6666679            0        B  488.55555610           1        B  590.40740711           2        B  637.62963012           3        B  421.88888913           4        B  539.94444414           5        B  516.33333315           6        B  448.83333316           7        B  497.16666717           8        B  458.833333

富国沪深

这应该工作import pandas as pdimport numpy as npnp_array = np.array([[451.75      , 488.55555556],   [552.44444444, 590.40740741],   [629.875     , 637.62962963],   [454.66666667, 421.88888889],   [637.16666667, 539.94444444],   [538.83333333, 516.33333333],   [463.83333333, 448.83333333],   [429.2962963 , 497.16666667],   [524.66666667, 458.83333333]])pd_df = pd.DataFrame(np_array, columns=["A", "B"])num_individuals = len(pd_df.index)pd_df = pd_df.melt()pd_df["INDIVIDUAL"] = [(i)%(num_individuals) + 1 for i in pd_df.index]pd_df   variable       value  INDIVIDUAL0         A  451.750000           11         A  552.444444           22         A  629.875000           33         A  454.666667           44         A  637.166667           55         A  538.833333           66         A  463.833333           77         A  429.296296           88         A  524.666667           99         B  488.555556           110        B  590.407407           211        B  637.629630           312        B  421.888889           413        B  539.944444           514        B  516.333333           615        B  448.833333           716        B  497.166667           817        B  458.833333           9
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python