Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将每个个人ID的3个日期数据透视到列_Python_Pandas - Fatal编程技术网

Python 将每个个人ID的3个日期数据透视到列

Python 将每个个人ID的3个日期数据透视到列,python,pandas,Python,Pandas,我有一个数据帧(DF1),每个个人ID都有3个与该ID相关的日期: 我已经为每个日期(当前为空)的每个个人ID和列创建了一个数据框(DF_ID)w/1行,并希望将3个日期/个人ID(DF1)加载/循环到相应的日期列中最终的数据框如下所示: 我正在尝试学习python,并尝试了许多编码脚本来实现,例如: {for index, row in df_bnp_5.iterrows(): df_id['Date-1'] = (row.loc[0,'hv_lab_test_dt'])

我有一个数据帧(DF1),每个个人ID都有3个与该ID相关的日期:

我已经为每个日期(当前为空)的每个个人ID和列创建了一个数据框(DF_ID)w/1行,并希望将3个日期/个人ID(DF1)加载/循环到相应的日期列中最终的数据框如下所示: 我正在尝试学习python,并尝试了许多编码脚本来实现,例如:

{for index, row in df_bnp_5.iterrows():
     df_id['Date-1'] = (row.loc[0,'hv_lab_test_dt'])
     df_id['Date-2'] = (row.loc[1,'hv_lab_test_dt'])
     df_id['Date-3'] = (row.loc[2,'hv_lab_test_dt'])
  
for i in range(len(df_bnp_5)) : 
   df_id['Date-1'] = df1.iloc[i, 0], df_id['Date-2'] = df1.iloc[i, 2])}  
任何协助都将不胜感激


谢谢大家!

这里有一种方法。我创建了一个“助手”列来安排每个个人ID的日期

import pandas as pd

# create data frame
df = pd.DataFrame({'Personal-ID': [1, 1, 1, 5, 5, 5], 
                   'Date': ['10/01/2019', '12/28/2019', '05/08/2020',
                            '01/19/2020', '06/05/2020', '07/19/2020']})

# change data type
df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')

# create grouping key
df['x'] = df.groupby('Personal-ID')['Date'].rank().astype(int)

# convert to wide table
df = df.pivot(index='Personal-ID', columns='x', values='Date')

# change column names
df = df.rename(columns={1: 'Date-1', 2: 'Date-2', 3: 'Date-3'})

print(df)

x               Date-1     Date-2     Date-3
Personal-ID                                 
1           2019-10-01 2019-12-28 2020-05-08
5           2020-01-19 2020-06-05 2020-07-19