重复条目并重命名 pandas 数据透视表中的列行而不进行聚合

2023-11-29

我正在尝试将这个示例数据帧从长格式重塑为宽格式,而不聚合任何数据。

import numpy as np
import pandas as pd

df = pd.DataFrame({'SubjectID': ['A', 'A', 'A', 'B', 'B', 'C', 'A'], 'Date': 
['2010-03-14', '2010-03-15', '2010-03-16', '2010-03-14', '2010-05-15', 
'2010-03-14', '2010-03-14'], 'Var1': [1 , 12, 4, 7, 90, 1, 9], 'Var2': [ 0, 
0, 1, 1, 1, 0, 1], 'Var3': [np.nan, 1, 0, np.nan, 0, 1, np.nan]})

df['Date'] = pd.to_datetime(df['Date']); df

    Date    SubjectID   Var1    Var2    Var3
0   2010-03-14  A   1   0   NaN
1   2010-03-15  A   12  0   1.0
2   2010-03-16  A   4   1   0.0
3   2010-03-14  B   7   1   NaN
4   2010-05-15  B   90  1   0.0
5   2010-03-14  C   1   0   1.0
6   2010-03-14  A   9   1   NaN

为了解决重复值,我按"Date"列并获取每个值的累积计数。然后我制作一个数据透视表

df['idx'] = df.groupby('Date').cumcount()

dfp = df.pivot_table(index = 'SubjectID', columns = 'idx'); dfp 

    Var1    Var2    Var3
idx 0   1   2   3   0   1   2   3   0   2
SubjectID                                       
A   5.666667    NaN NaN 9.0 0.333333    NaN NaN 1.0 0.5 NaN
B   90.000000   7.0 NaN NaN 1.000000    1.0 NaN NaN 0.0 NaN
C   NaN NaN 1.0 NaN NaN NaN 0.0 NaN NaN 1.0

但是,我想要idx列索引是来自的值"Date"列,我不想聚合任何数据。预期输出是

     Var1_2010-03-14 Var1_2010-03-14 Var1_2010-03-15 Var1_2010-03-16 Var1_2010-05-15 Var2_2010-03-14    Var2_2010-03-15 Var2_2010-03-16 Var2_2010-05-15 Var3_2010-03-14 Var3_2010-03-15 Var3_2010-03-16 Var3_2010-05-15
SubjectID                                       
A   1   9   12  4   NaN 0   1   0    1.0    NaN NaN NaN 1.0 0.0 NaN
B   7.0 NaN NaN NaN 90  1   NaN NaN  1.0    NaN NaN NaN NaN NaN 0.0
C   1   NaN NaN NaN NaN 0   NaN NaN  NaN    NaN 1.0 NaN NaN NaN NaN

我怎样才能做到这一点?最终,我将合并两个列索引dfp.columns = [col[0]+ '_' + str(col[1]) for col in dfp.columns].


您走在正确的道路上:

# group
df['idx'] = df.groupby('Date').cumcount()

# set index and unstack
new = df.set_index(['idx','Date', 'SubjectID']).unstack(level=[0,1])

# drop idx column
new.columns = new.columns.droplevel(1)
new.columns = [f'{val}_{date}' for val, date in new.columns]

我认为这是你的预期输出

Using map看起来会快一点:

df['idx'] = df.groupby('Date').cumcount()
df['Date'] = df['Date'].astype(str)
new = df.set_index(['idx','Date', 'SubjectID']).unstack(level=[0,1])
new.columns = new.columns.droplevel(1)
#new.columns = [f'{val}_{date}' for val, date in new.columns]
new.columns = new.columns.map('_'.join)

这是一个 50,000 行测试示例:

#data
data = pd.DataFrame(pd.date_range('2000-01-01', periods=50000, freq='D'))
data['a'] = list('abcd')*12500
data['b'] = 2
data['c'] = list('ABCD')*12500
data.rename(columns={0:'date'}, inplace=True)

# list comprehension:
%%timeit -r 3 -n 200
new = data.set_index(['a','date','c']).unstack(level=[0,1])
new.columns = new.columns.droplevel(0)
new.columns = [f'{x}_{y}' for x,y in new.columns]

# 98.2 ms ± 13.3 ms per loop (mean ± std. dev. of 3 runs, 200 loops each)

# map with join:
%%timeit -r 3 -n 200
data['date'] = data['date'].astype(str)
new = data.set_index(['a','date','c']).unstack(level=[0,1])
new.columns = new.columns.droplevel(0)
new.columns = new.columns.map('_'.join)

# 84.6 ms ± 3.87 ms per loop (mean ± std. dev. of 3 runs, 200 loops each)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重复条目并重命名 pandas 数据透视表中的列行而不进行聚合 的相关文章

  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 绘制随时间变化的分类数据计数

    我有一个数据框 df 其中有一列包含分类数据 ETH 带有 DateTimeIndex 我想绘制类别counts随着时间的推移 它们按天索引 我最好按年绘制它们 df pd DataFrame County 0 Bexar 3 Nueces
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 熊猫:什么是视图?

    请帮助我理解 什么是view在熊猫中 我知道如果我们改变一些东西view我们总是对原始对象进行更改 但物体的视图和原始物体有不同id s例如 这是否意味着view是另一个对象引用原始对象吗 机制是什么 我尝试过但找不到解释 import p
  • 在工作表中合并行和求和值

    我有一个 Excel 工作表 其中包含以下数据 管道 来分隔列 A B C X 50 60 D E F X 40 30 A B C X 10 20 A B C Y 20 20 A B C X 20 70 D E F X 10 50 A B
  • “DataFrame”对象没有属性“isna”

    我为我的一个项目改编了一种机器学习代码 在我的笔记本电脑上运行良好的代码 现在在我的台式机上出现问题 我正在检查所有数据框列是否有缺失值 File g100 py line 11 in
  • python 从字典中获取唯一值

    我想从我的字典中获取唯一的值 Input 320 167 316 0 319 167 401 167 319 168 380 167 265 166 期望的输出 167 0 168 166 我的代码 unique values sorted
  • 从 SQL 数据库导入表并按日期过滤行时,将 Pandas 列解析为日期时间

    我有一个DataFrame列名为date 我们如何将 日期 列转换 解析为DateTime object 我使用 Postgresql 数据库加载日期列sql read frame 的一个例子date列是2013 04 04 我想做的是选择
  • 使用 pandas 中的正则表达式在另一列中查找一列中的值

    我有一个包含两列字符串的 pandas 数据框 我想识别第一列中字符串的所有行 s1 出现在第二列 s2 所以如果我的专栏是 abc abcd ef gh z1y xxyyzz 我想保留第一行 但不想保留第二行 我能想到的唯一方法是 迭代数
  • 删除aws beanstalk上的uuid python包

    这是针对所提出问题的后续帖子 问题here https stackoverflow com questions 44421761 flask beanstalk deployment errors 以防万一对其他人有用 自从第一篇文章以来
  • Pandas 数据透视表同时包含多列

    我怀疑是否pandas pivot table可以一次接受两列并单独处理它们 而不是分层处理 假设我有以下数据框 id date day val 101 11 1 1 1 2 1 101 11 1 2 2 2 2 101 11 1 3 3
  • Flask-migrate:更改模型属性并重命名相应的数据库列

    我对 Flask 有一些经验 但对数据库 Flask migrate alembic SqlAlchemy 不太了解 我正在跟进this https blog miguelgrinberg com post the flask mega t
  • python 排列有问题

    我在排列方面遇到一些问题 当谈到Python时 我真的是一个大菜鸟 所以任何帮助将不胜感激 假设我在文本文件中有一个范围为 1 6 的列表 例如 它看起来像 1 2 3 4 5 6 我想打开所述 txt 文件并计算这 6 个数字中 N 的所
  • 占据花车的地板

    我发现了两种在 Python 中占据发言权的方法 3 1415 1 and import math math floor 3 1415 第一种方法的问题是它返回一个浮点数 即3 0 第二种方法感觉很笨拙而且太长 在 Python 中是否有替
  • Pandas.read_excel 有时会错误地将布尔值读取为 1/0

    我需要将一个非常大的 Excel 文件读入 DataFrame 中 该文件包含字符串 整数 浮点和布尔数据 以及丢失的数据和完全空的行 还值得注意的是 某些单元格值源自单元格公式和 或 VBA 尽管理论上这不会影响任何内容 正如标题所示 p
  • 如何在 Pandas Python 中按 id 对行进行排名

    我有一个像这样的数据框 id points1 points2 1 44 53 1 76 34 1 63 66 2 23 34 2 44 56 我想要这样的输出 id points1 points2 points1 rank points2
  • Python,Google Places API - 给定一组纬度/经度查找附近的地点

    我有一个由商店 ID 及其纬度 经度组成的数据框 我想迭代该数据框 并使用 google api 为每个商店 ID 查找附近的关键地点 例如输入 Store ID LAT LON 1 1 222 2 222 2 2 334 4 555 3
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15

随机推荐

  • 音频和视频等大文件的数据库

    我的应用程序创建了大量文件 每个文件最大 100MB 目前我们将这些文件存储在运行良好的文件系统中 但我想知道是否有更好的解决方案将文件存储在某种文件数据库中 数据库的一个简单优点是它可以分割文件并存储在小块中 而不是一个 100mb 的文
  • 使用 shebang 通过 subprocess.call 执行 python 脚本

    我正在用 Python 3 编写一个 某种程度上 模块化应用程序 我想从中运行任意程序 该程序是在运行时指定的 而不一定是 python 脚本 所以我用例如 subprocess call spam i eggs o ham If spam
  • 带有自定义标签的 CSS 宽度

    我无法获取适用于我的自定义标签的宽度和高度属性 请参阅下面的代码 CSS x slider width 1000px height 300px border 1px black solid background color 0000ff H
  • 在.NET中获取用户的Exchange服务器和电子邮件地址

    嗨 我想知道我的用户的 Exchange 服务器的地址 假设她位于典型的 Windows 办公网络中 这是在 C 应用程序中 我已经有了用户的电子邮件地址 我在以下位置找到了它System DirectoryServices Account
  • 类依赖工具

    我正在寻找一个 最好是开源 工具 在给定大量 C C 代码的情况下 该工具将生成类 C 和 或文件 C 之间依赖关系的可视化或 XML 图表 这个想法是 如果您必须将代码转换为另一种语言 您希望能够首先编译最低级别的类 然后从那里开始构建
  • 在 Apache Flink 中使用 DynamoDB 流

    有人尝试过在 Apache Flink 中使用 DynamoDB 流吗 Flink 有一个 Kinesis 消费者 但我正在寻找如何直接使用 Dynamo 流 DataStream
  • Windbg:是否可以在我自己的程序中嵌入Windgb引擎?

    我想编写一个调试 诊断工具 它可以调用 Windbg 函数来检查转储文件 而不是编写 Windbg 扩展 这可能吗 有什么参考吗 多谢 您可以使用 dbghelp dll 中实现的调试 API 而不是 WinDbg 它记录在MSDN 该参考
  • 用指针修改字符串[重复]

    这个问题在这里已经有答案了 这两个代码必须改变字符2在角色中 4 int main int argc char argv char s hello s 2 4 printf s n s return 0 当我运行此命令时 我会遇到分段错误
  • Python 和 MySQLdb:表替换导致语法错误

    我需要时不时地动态更改表和变量 所以我写了一个像这样的python方法 selectQ SELECT FROM s WHERE s s self db execute selectQ self table self columnSpecNa
  • F# 中“>>”运算符的语义

    在微软的F 样本 他们使用 gt gt 运算符 如下所示 test gt Seq iter any to string gt gt printfn line s gt gt 运算符在这种情况下做什么 序列中的每个项目 在本例中为数组 是否被
  • .NET 异步流读/写

    我一直在尝试解决这个 并发编程 考试练习 C 知道Stream类包含int Read byte buffer int offset int size and void Write byte buffer int offset int siz
  • Html / Php 表单未添加到 SQL 数据库

    我已经为此工作了几个小时 包括重建我的整个代码 我无法弄清楚出了什么问题 HTML 表单应该填充患者 SQL 数据库 但它不起作用 我在网站的另一部分使用了一个类似的表格 该表格可以完美地工作 但这个表格似乎不起作用 并且无法弄清楚为什么
  • MySQL REPEATABLE-READ Workbench 事务级别未设置

    我们在 my ini 文件中设置了以下内容 mysql 事务隔离 已提交读 我们假设此设置将是所有用户会话的默认设置 使用 PHPMyAdmin 登录时 tx isolation 设置正确并且按预期工作 然而 当使用 MySQL Workb
  • 拖放在 C# 中不起作用

    我在 C 中创建了一个拖放控件 以允许人们将文件拖放到我的表单上 这是我遇到的问题 调试时工作正常 但是 当以管理员模式运行我的程序时 它不起作用 这有什么原因吗 这是我的代码 private void panel1 DragEnter o
  • .NET 24 小时格式时间的正则表达式

    我可以在 NET 中有一个正则表达式吗 它只允许文本框中使用 24 小时时间格式 Thanks 此致 多发性硬化症 正则表达式 时间 hh mm 验证 24 小时格式 0 1 d 2 0 3 0 5 d 如果你也需要几秒钟 0 1 d 2
  • 使用 HTML 的 PHP 表格

    我的目标是使用一个 txt 文件 其中包含填写表单的特定响应所需的数据 该表格应该有用户名和密码 此外 还可以在表单上设置价格范围参数 用户名可以任意大小写 但密码区分大小写 我已经创建了我将使用的 html 表单 txt 文件中的数据包含
  • 使用函数参数进行回文条件检查[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 这是使用函数参数来检查字符串是否回文的 php 代码
  • Java 日期之间的天数(作业)

    当我运行该程序时 这是几天的休息时间 对我做错了什么有什么建议吗 我知道有一种更简单的方法可以做到这一点 但为此我试图展示查找之间的天数的所有实际步骤 家庭作业 因此不能使用日期时间库 public class DaysBetween pu
  • Spring REST 模拟上下文路径

    我尝试使用以下代码片段设置 Spring Rest 模拟的上下文路径 private MockMvc mockMvc Before public void setUp this mockMvc MockMvcBuilders webAppC
  • 重复条目并重命名 pandas 数据透视表中的列行而不进行聚合

    我正在尝试将这个示例数据帧从长格式重塑为宽格式 而不聚合任何数据 import numpy as np import pandas as pd df pd DataFrame SubjectID A A A B B C A Date 201