Python 将每个个人ID的3个日期数据透视到列
我有一个数据帧(DF1),每个个人ID都有3个与该ID相关的日期: 我已经为每个日期(当前为空)的每个个人ID和列创建了一个数据框(DF_ID)w/1行,并希望将3个日期/个人ID(DF1)加载/循环到相应的日期列中最终的数据框如下所示: 我正在尝试学习python,并尝试了许多编码脚本来实现,例如: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'])
{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