zhangyiru1997 2023-05-31 09:50 采纳率: 50%
浏览 15

该图是输出的结合后的C表,不知道为什么只包含一个病人ID,而且想要变成横向排列应该怎么做(关键词-table)


import pandas as pd
import datetime

# 读取表A和表B的数据
table_a = pd.read_excel("C:/Users/汝汝/Desktop/体征/2012年体征(整理).xlsx")
table_b = pd.read_excel("C:/Users/汝汝/Desktop/基本信息/2012年住院.xlsx")

# 按病人ID对表A进行分组,并按时间排序
table_a['检查日期'] = pd.to_datetime(table_a['检查日期'])
df_a_grouped = table_a.sort_values(by='检查日期').groupby('PATIENT_ID')

# 创建空的DataFrame用于保存合并结果
combined_data = pd.DataFrame()

# 遍历表B的数据
for index, row in table_b.iterrows():
    # 在表A中找到其病人ID对应的分组,并进行二分查找,找到表A中最靠近当前行数据时间的体征
    df_a_current = df_a_grouped.get_group(row['PATIENT_ID'])  # 表A数据子集
    df_a_current = df_a_current.reset_index(drop=True)
    diagnosis_date_str = row['诊断日期'].strftime('%Y-%m-%d %H:%M:%S')
    df_a_closest = df_a_current.iloc[
        (df_a_current['检查日期'] - datetime.datetime.strptime(diagnosis_date_str, '%Y-%m-%d %H:%M:%S')).abs().argsort()[0]
    ]
    # 将表B中的数据和找到的表A中的体征进行合并,并追加到结果DataFrame中
    combined_row = pd.concat([row, df_a_closest.to_frame().T], axis=1)
    combined_data = combined_data.append(combined_row, ignore_index=True)
# 打印合并后的结果
print(combined_data)

# 将DataFrame输出为Excel文件
combined_data.to_excel('匹配数据.xlsx', index=False)

img


该图是输出的结合后的C表,不知道为什么只包含一个病人ID,而且想要变成横向排列应该怎么做。
谢谢大家

  • 写回答

2条回答 默认 最新

  • 麦当当兄弟肯德德 2023-05-31 10:29
    关注

    如果您想将一个病人的C表从纵向排列变为横向排列,可以使用 Pandas 库中的 transpose() 函数。

    首先,将数据读入 DataFrame 中。假设数据已经保存在名为 df 的 DataFrame 中,则可以按如下方式进行转置:

    df_T = df.transpose()
    

    这将生成一个新的 DataFrame 对象 df_T,其中病人 ID 成为行索引,而 C 表的组成部分成为列索引。如果您想对该 DataFrame 进行修改并覆盖原始 DataFrame,则可以使用 inplace=True 参数:

    df.transpose(inplace=True)
    

    或者,您也可以通过重新分配变量来达到相同的效果:

    df = df.transpose()
    

    在转置后,您可以使用 Pandas 中提供的各种函数和方法来进一步处理和分析数据,例如,您可以使用 sort_values() 函数按日期对 C 表进行排序:

    df_T.sort_values(by='date', inplace=True)
    

    此函数默认按列名排序,因此我们需要使用 by 参数指定 date 列作为排序依据。再次指定 inplace=True 参数可在原始 DataFrame 上进行修改。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月31日

悬赏问题

  • ¥100 用数字代替ip主机号断与旋转链接号段
  • ¥20 学校内手机热点不能使用
  • ¥15 qwen模型微调训练时grad_norm为0.0或为nan
  • ¥15 若依- Spring cloud-plus集成阿里云schedulerX再控制台应用管理找不到实例
  • ¥15 用vs2022 fortran调试只无法查看数组的值,显示发生未指定的错误
  • ¥50 SGD Gateway 是否可以与 SGD Server 装在一台服务器上?
  • ¥15 gge梦幻西游的地图制作
  • ¥15 对计算机的学习没有方向
  • ¥15 用VBA抓取淘宝的发票号码和下载发票pdf遇到的问题
  • ¥20 java excel导出有什么解决方案