gpt4 book ai didi

python - 如何在 pandas 中对齐 dfs

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

我有两个数据框。第一个是这样的:

 idx  token   tag   file
0 This AA file_1.1
1 is AA file_1.1
2 a AA file_1.2

第二个是这样的

file          
file_1.1 IXX GXX
file_1.2 AXX
file_1.3 AXX

如何将两者结合起来,以便我拥有以下内容:

 idx  token   tag   file        ID  
0 This AA file_1.1 IXX
1 is AA file_1.1 GXX
2 a AA file_1.2 AXX

所以,首先我需要按文件列对齐(我可以做到这一点),然后如果一行有一个 id,我必须将其添加到 ID 列,如果它有多个,则将其添加到第一个 token ,第二个 token 到第二个 token ,依此类推。每行的 ID 永远不会多于 token 。

我尝试了以下方法

pandas.concat([df1,df2],axis=1,join_axes=[df1.index])

但是这不起作用。

最佳答案

我打印了 df 和 df2,以便您可以确认这些是您正在使用的 DataFrame。

>>> print df
token tag file
0 This AA file_1.1
1 is AA file_1.1
2 a AA file_1.2

>>> print df2
0 1
file
file_1.1 IXX GXX
file_1.2 AXX None
file_1.3 AXX None

>>> a = df.set_index(['file', df.groupby('file').cumcount()])
>>> print a
token tag
file
file_1.1 0 This AA
1 is AA
file_1.2 0 a AA

>>> b = df2.stack().to_frame('ID')
>>> print b
ID
file
file_1.1 0 IXX
1 GXX
file_1.2 0 AXX
file_1.3 0 AXX

>>> c = a.join(b).reset_index(1, drop=True).reset_index()
>>> print c
file token tag ID
0 file_1.1 This AA IXX
1 file_1.1 is AA GXX
2 file_1.2 a AA AXX

请注意,这将是左连接。你说“我永远不会有比每行 token 更多的 ID。”,但在示例中,file_1.3 在 df2 中有 1 个 ID,在 df 中有 0 个 token 。所以,我以为你的意思是相反的。在连接中放入 how='right' 将会以另一种方式实现。

关于python - 如何在 pandas 中对齐 dfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33411466/

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