并排连接Pandas数据帧行/在同一时间内上下连接

2024-10-01 19:19:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有问题。我想从另一个数据帧创建一个新的数据帧。我想避免重复行。这意味着,如果有相同的邮件,我应该将它们并排连接起来,否则就是顶部和底部。但问题是我每次都会遇到值索引错误。在

pandas.indexes.base.InvalidIndexError: Reindexing only valid with uniquely valued Index objects

下面是我所做的:

^{pr2}$

数据框只有一行这就是我使用的原因

data_frame_['Email'][0]

数据示例(在数据框中):

 Email                     Project1 Target1 Projetc2 Target2
-------------------------------------------------------------
 kml@mail.com                1      5000     NaN       NaN
 abc@abc.com                 7      5000     NaN       NaN
 kml@mail.com                7      4000     NaN       NaN

我想要的是:

 Email                     Project1 Target1 Projetc2 Target2
-------------------------------------------------------------
 kml@mail.com               1       5000      7       4000
 abc@abc.com                7       5000     NaN       NaN

Ps:我可以用dicts来做,但是为了保护代码的完整性,我想使用数据帧。在

提前谢谢你。在


Tags: 数据compandasemail错误邮件mailnan
1条回答
网友
1楼 · 发布于 2024-10-01 19:19:36

您可以使用^{},但首先按^{}创建组:

#rename columns
df.rename(columns={'Project1':'Project','Target1':'Target'}, inplace=True)

print (df)
      Email                Project  Target
0  kml@mail.com              1    5000
1  abc@abc.com               7    5000
2  kml@mail.com              7    4000

df['g'] = (df.groupby('Email').cumcount() + 1).astype(str)

df1 = df.pivot_table(index='Email', columns='g', values=['Project', 'Target'])
#Sort multiindex in columns 
df1 = df1.sort_index(axis=1, level=1)
#'reset' multiindex in columns
df1.columns = [''.join(col) for col in df1.columns]
print (df1)
                     Project1  Target1  Project2  Target2
Email                                                    
abc@abc.com               7.0   5000.0       NaN      NaN
kml@mail.com              1.0   5000.0       7.0   4000.0

相关问题 更多 >

    热门问题