如何按列分组并将信息存储在列表中以避免丢失?

问题描述

我尝试设置一个匹配表,但是我的基本数据存在一些错误。我脑海中有一幅画,结果是什么样的,但是直到现在我还没有发现如何得到它。也许有人可以帮助我。

基本上,我有一个基于不同小匹配表的表,并且我想设置一个将所有信息组合在一起的匹配表。我们可能会遇到错误圈。

基础数据:

script.pl file1.log > temp.log

我计划逐列合并表,这意味着我从df > t1 t2 t3 > 0 a c NaN > 1 b d NaN > 0 NaN c f > 1 NaN c g > 0 h NaN f > 1 b NaN j 开始并“合并”元素(在本例中为b),结果是

t1

如果该列中没有问题,那么就没有问题,但是如果有问题,它将不再起作用。

当我想继续使用df_processed = df.groupby(['t1']).first().reset_index() frames = [df_processed,df[df['t1'].isnull()]] df = pd.concat(frames) df > t1 t2 t3 > 0 a c NaN > 1 b d j > 2 NaN c f > 0 NaN c g > 1 h NaN f 时,出现了一个合并问题,因为在列t2中'c'有两个可能的值。我想将所有列都作为列表,并将信息存储在这样的列表中(处理col t3t1后的结果):

t2

处理完所有列后的最终表:

df
>       t1      t2      t3
> 0     [a]     [c]     [f,g]
> 1     [b]     [d]     [j]
> 1     [h]     [NaN]   [f]

我希望我明确了我要寻找的东西。如果您有任何疑问,请随时提出:-)

最佳

P

解决方法

也许先尝试groupby,然后再尝试applylist

df_new = df.groupby('index')['t1'].apply(list)

在上文中,我将“ index”称为示例数据帧中0和1上未标记的列。