首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将每个Personal-ID的3个日期旋转到列

将每个Personal-ID的3个日期旋转到列
EN

Stack Overflow用户
提问于 2020-10-08 23:15:34
回答 1查看 21关注 0票数 0

我有一个数据帧(DF1) -每个Personal-ID将有3个与该ID关联的日期:

我已经为每个日期(当前为空)的每个Personal-ID和列创建了一个数据帧(DF_ID),并希望将3个日期/Personal-ID (DF1)加载/循环到相应的日期列中,最终的数据帧看起来是这样的:我正在尝试学习Python语言,并尝试了许多编码脚本来完成以下操作:

代码语言:javascript
复制
{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])}  

任何帮助都将不胜感激。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-09 04:04:29

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

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64265600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档