python - 在 pandas 中透视数据框,同时为值创建额外的新列

标签 python pandas numpy pivot pivot-table

我有一个如下所示的表格:

<表类=“s-表”> <标题> ID 名字 姓氏 出生日期 1/1/2022 2022 年 2 月 1 日 2022 年 3 月 1 日 2022 年 4 月 1 日 开始日期 结束日期 <正文> MO12 万达 示例 2020年1月1日 好 好 好 好 2022 年 1 月 1 日 2022 年 1 月 31 日

我想将数据旋转为如下所示:

<表类=“s-表”> <标题> ID 生效日期 名字 姓氏 出生日期 状态 开始日期 结束日期 <正文> MO12 2022 年 1 月 1 日 万达 示例 2020年1月1日 好 2022 年 1 月 1 日 2022 年 1 月 31 日 MO12 2022 年 2 月 1 日 万达 示例 2020年1月1日 好 2022 年 1 月 1 日 2022 年 1 月 31 日 MO12 2022 年 3 月 1 日 万达 示例 2020年1月1日 好 2022 年 1 月 1 日 2022 年 1 月 31 日 MO12 2022 年 4 月 1 日 万达 示例 2020年1月1日 好 2022 年 1 月 1 日 2022 年 1 月 31 日

实际上,这会将单独注明日期的列转换为名为“状态”的列和包含单独日期的行。

我从这个基本代码开始,但我在创建新列并将值分配给各自列的语法中遇到了混淆。

import pandas as pd
import numpy as np

df = pd.read_csv(r'C:\Users\User\sample.csv')
df.pivot_table(columns=['Effective Date','First Name','Last Name','Date of Birth','Status','Start Date','End Date'],values=['1/1/2022','2/1/2022','3/1/2022','4/1/2022'], aggfunc=np.max)
df.head

最佳答案

尝试融化:

df.melt(['ID', 'First Name', 'Last Name', 'Date of Birth', 'Start Date', 'End Date'], 
        var_name='Effective Date', value_name='Status')

输出:

     ID First Name Last Name Date of Birth Start Date   End Date Effective Date Status
0  MO12      Wanda    Sample      1/1/2020   1/1/2022  1/31/2022       1/1/2022   Good
1  MO12      Wanda    Sample      1/1/2020   1/1/2022  1/31/2022       2/1/2022   Good
2  MO12      Wanda    Sample      1/1/2020   1/1/2022  1/31/2022       3/1/2022   Good
3  MO12      Wanda    Sample      1/1/2020   1/1/2022  1/31/2022       4/1/2022   Good

关于python - 在 pandas 中透视数据框,同时为值创建额外的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76672462/

相关文章:

python - 如何加速 numpy 代码

python - 搜索问题并显示报告

python - 将具有度分秒(DMS)坐标的 Pandas 数据框转换为十进制度

python - 我们如何将字符串转换为 float ?

python - 从混淆矩阵创建(有效)假真值/预测值

python - 通过拆分它并在拆分之间求和来减少 numpy 数组的大小

python - 如何将 24 小时时间转换为 12 小时时间?

python - 如何从较大的数组创建一个新的较小的数组,并取旧数组元素的平均值?

python - pd.Grouper 与日期时间键结合另一个分组键似乎创建了错误的组数

python - 使用 groupby pandas 选择条件适用于长格式多行的行