首页 > 解决方案 > 如果两个dfs之间的行值相同,则比较两个熊猫数据帧并写入新数据帧

问题描述

首先,我将解释整个问题,如果没有熊猫有更好的方法,请说。我刚刚尝试了很多方法,我觉得 pandas 可能是最好的方法。

我有两个文本文件。每个文本文件如下所示:

Sometextinbothfiles    UniqueText    SomeTextThatCouldbeCommon    Unique Text

有更多带有 UniqueText 的列,但这给出了布局的基本概念。还有一些标题信息,但这很容易通过忽略 pandas 中的前 22 行来删除。带有 SomeTextThatCouldbeCommon 的列总是在同一个地方,这就是我想要查看的。它是一个文件名。

目前我只是拉入每个文本文件并使用熊猫将它们分开

Data = open("data.star", "r")
Datapd = pd.read_csv(Data, sep=r"\s+", skiprows=range(0,23), header=None)

所以我想将文本文件每一行上的 SomeTextThatCouldbeCommon 与另一个文本文件每一行上的相同 SomeTextThatCouldbeCommon 进行比较。如果有匹配项,我想将整行写入新的数据框/文本文件/数组。然后我想反过来做同样的事情。所以最后我有两个文件引用相同的文件,但每个文件中都有关于该数据的唯一数据。

我希望我已经解释过了。请帮助我正在努力弄清楚如何做到这一点。

标签: pythonpandasdataframetext

解决方案


嗨,伙计,您可以在这里找到解决问题的简单示例,希望对您有用:

两个示例数据框:

df1 = pd.DataFrame({
"Date" : [2013-11-24, 2013-11-24, 2013-11-24, 2013-11-24],
"Fruit" : ['Banana', 'Orange', 'Apple', 'Celery'], 
"Num" : [22.1, 8.6, 7.6, 10.2],
"Color" : ['Yellow', 'Orange', 'Green', 'Green']
})

df2 = pd.DataFrame({
"Date" : [2013-11-25, 2013-11-24, 2013-11-24, 2018-11-24],
"Fruit" : ['Banana', 'Cherry', 'Mango', 'Celery'], 
"Num" : [22.1, 8.6, 7.6, 10.2],
"Color" : ['Yellow', 'Green', 'Yellow', 'Green']
})

mask = (df1 == df2)
df1.where(mask)

如果有匹配的结果,否则您应该收到“NaN”值。


推荐阅读