【问题标题】:Reshape pandas dataframe using a list of unique values使用唯一值列表重塑 pandas 数据框
【发布时间】:2019-03-15 03:28:16
【问题描述】:

我有一个 12 行 3 列的数据框。 “名称”列上的每个值都可能与“目标”列上的许多值相关联。对于每个值,还有一个关联的“val”,它是一个数值变量。 示例:

name  val target
a     6.3    la
b     3.5    le
c     10     li
d     8      lo
e     2.3    lu
f     5.6    lao
g     4.7    laoo
h     4.7    laooo
a     4.8    lo
j     1.2    le
b     1.5    re
k     9.8    la

我想使用“目标”列中的唯一值作为新列来重塑我的数据框,并将相应的“val”附加到每一行。由于每个目标有不同数量的“val”,新数据框应该用零填充空行。例如:

la     le     li     lo     lu    ...
6.3    3.5    10     8      2.3   ...
9.8    1.2     0     4.8    0     ...

我找到了一个可以执行此操作的脚本,但要理解它在做什么非常复杂。是否可以使用 numpy 和/或 pandas 仅使用几行代码来完成?

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:
    x = pd.DataFrame.from_dict(
        df.groupby('target')['val'].apply(np.unique).to_dict(), 'index').T.fillna(0)
    
    print(x)
    

    输出:

        la  lao  laoo  laooo   le    li   lo   lu   re
    0  6.3  5.6   4.7    4.7  1.2  10.0  4.8  2.3  1.5
    1  9.8  0.0   0.0    0.0  3.5   0.0  8.0  0.0  0.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-06
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 2022-01-16
      • 2020-04-19
      相关资源
      最近更新 更多