问题描述
我尝试设置一个匹配表,但是我的基本数据存在一些错误。我脑海中有一幅画,结果是什么样的,但是直到现在我还没有发现如何得到它。也许有人可以帮助我。
基本上,我有一个基于不同小匹配表的表,并且我想设置一个将所有信息组合在一起的匹配表。我们可能会遇到错误圈。
基础数据:
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 t3
和t1
后的结果):
t2
处理完所有列后的最终表:
df
> t1 t2 t3
> 0 [a] [c] [f,g]
> 1 [b] [d] [j]
> 1 [h] [NaN] [f]
我希望我明确了我要寻找的东西。如果您有任何疑问,请随时提出:-)
最佳
P
解决方法
也许先尝试groupby
,然后再尝试apply
和list
:
df_new = df.groupby('index')['t1'].apply(list)
在上文中,我将“ index”称为示例数据帧中0和1上未标记的列。