python - 将重复行转换为熊猫数据框中的列
问题描述
我正在尝试将具有重复行的数据框转换为列,如下所示
INPUT
Key | Value
A | 1
B | 2
C | 3
A | 4
B | 5
C | 6
EXPECTED OUTPUT
A | B | C
1 | 2 | 3
4 | 5 | 6
有很多选项,如 pivot()、unstack()、groupby() 等。但是,我不确定是否只使用 2 列,如输入所示。
解决方案
它不是一个直截了当的pivot
. 使用df.pivot
withdf.apply
和执行此操作Series.dropna
:
In [747]: x = df.pivot(index=None, columns='Key', values='Value').apply(lambda x: pd.Series(x.dropna().to_numpy()))
In [748]: x
Out[748]:
Key A B C
0 1.0 2.0 3.0
1 4.0 5.0 6.0
解释:
让我们分解一下:
首先你df
像这样旋转你:
In [751]: y = df.pivot(index=None, columns='Key', values='Value')
In [752]: y
Out[752]:
Key A B C
0 1.0 NaN NaN
1 NaN 2.0 NaN
2 NaN NaN 3.0
3 4.0 NaN NaN
4 NaN 5.0 NaN
5 NaN NaN 6.0
现在我们接近您的预期输出,但我们需要删除Nan
6 行并将其折叠为 2 行。
为此,我们将每一列转换为 apd.Series
和dropna()
:
In [753]: y.apply(lambda x: pd.Series(x.dropna().to_numpy()))
Out[753]:
Key A B C
0 1.0 2.0 3.0
1 4.0 5.0 6.0
这是您的最终输出。
推荐阅读
- java - 是否可以从不同类的枚举中选择随机值?
- python - 神经网络的 3d 图
- javascript - 如何使用javascript从日期输入中获取日期
- python - 从 tkinter 到 python 脚本的输入和从 python 脚本到 tkinter 的输出
- flutter - Flutter - 使用变量值渲染文本类。可能的类型问题?
- java - 如何将保存在计算机上的 jpg 添加到我编写的代码中
- ruby-on-rails - react 和 rails 中的 csrf
- asp.net-core - ASP-NET.core如何实现资源文件本地化?
- sql - SQL查询根据列分组获取总人数
- python - python Rock Paper Scissors项目中的函数调用问题