gpt4 book ai didi

python - 从两列中创建单个数据框,每列包含列表

转载 作者:太空宇宙 更新时间:2023-11-03 16:59:47 25 4
gpt4 key购买 nike

我有一个如下所示的文件:

Location Code   Trait ID    Effective Date
WAU1 23984,24896,27576 06/05/2014 ,06/05/2014 ,06/12/2014
WAU2 126973,219332 06/05/2014 ,06/05/2014
WAU3 24375 06/05/2014
WAU4 23984 06/05/2014
WAU5 5199,23984 NULL
WAU6 12342,224123 06/05/2014

请注意第二列和第三列是值的“列表”。有些行在每个列表中的元素数量方面包含精确匹配,其他行则缺失或根本不存在(空)。我需要创建一个类似于以下内容的单个数据框

   Location Code Trait ID  Effective Date
0 WAU1 23984 06/05/2014
1 WAU1 24896 06/05/2014
2 WAU1 27576 06/12/2014
3 WAU2 126973 06/05/2014
4 WAU2 219332 06/05/2014
5 WAU3 24375 06/05/2014
6 WAU4 23984 06/05/2014
7 WAU5 5199 NaN
8 WAU5 23984 NaN
9 WAU6 12342 06/05/2014
10 WAU6 224123 NaN

我已经能够使用以下方法将每个“列表”列分成单独的数据框:

df1 = df1['Trait ID'].str.split(',').apply(pd.Series,1).stack()
df1.index = df1.index.droplevel(-1)
df1.name = 'Trait ID'
del df1['Trait ID']
df1 = df1.join(trait_id)

这给了我类似的东西:

  Location Code Trait ID
0 WAU1 23984
0 WAU1 24896
0 WAU1 27576
1 WAU2 126973
1 WAU2 219332
2 WAU3 24375
3 WAU4 23984
4 WAU5 5199
4 WAU5 23984
5 WAU6 12342
5 WAU6 224123

我可以使用上面相同的逻辑创建另一个包含“生效日期”列表的数据框,以生成以下内容:

  Location Code Effective Date
0 WAU1 06/05/2014
0 WAU1 06/05/2014
0 WAU1 06/12/2014
1 WAU2 06/05/2014
1 WAU2 06/05/2014
2 WAU3 06/05/2014
3 WAU4 06/05/2014
4 WAU5 NaN
5 WAU6 06/05/2014

我正在努力在 pandas 中找到正确的“函数”(例如连接、合并、连接),以将两个数据帧组合成我想要的输出。虽然我有一种感觉它是它们的组合,并且在某个地方有一个reset_index()。

最佳答案

开头为:

  Location Code             Trait ID                    Effective Date
0 WAU1 23984, 24896, 27576 06/05/2014,06/05/2014,06/12/2014
1 WAU2 126973, 219332 06/05/2014,06/05/2014
2 WAU3 24375 2014-06-05 00:00:00
3 WAU4 23984 2014-06-05 00:00:00
4 WAU5 5199, 23984 NaN
5 WAU6 12342, 224123 2014-06-05 00:00:00

你可以 groupby('Location Code') ,使用str.split(',') with展开=真, pivot the result using堆栈()and每个组的 concat`:

df1.groupby('Location Code').apply(lambda x: pd.concat([x['Trait ID'].str.split(',', expand=True).stack(), x['Effective Date'].str.split(',', expand=True).stack()], axis=1)).reset_index([1, 2], drop=True)

获取:

                     0                    1
Location Code
WAU1 23984 06/05/2014
WAU1 24896 06/05/2014
WAU1 27576 06/12/2014
WAU2 126973 06/05/2014
WAU2 219332 06/05/2014
WAU3 24375 2014-06-05 00:00:00
WAU4 23984 2014-06-05 00:00:00
WAU5 5199 nan
WAU5 23984 NaN
WAU6 12342 2014-06-05 00:00:00
WAU6 224123 NaN

关于python - 从两列中创建单个数据框,每列包含列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35093076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com