如果两个df之间的行值相同,则比较两个熊猫数据帧并编写新的数据帧

时间:2018-11-06 13:52:43

标签: python pandas dataframe text

首先,我将解释整个问题,如果有更好的方法来做到这一点,请不要说熊猫。我刚刚尝试了很多方法,但我觉得熊猫可能是最好的选择。

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

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进行比较。如果有匹配项,那么我想将整行写到新的数据框/文本文件/数组中。然后,我想反过来做。因此,最后我有两个文件引用相同的文件,但是每个文件中都存在与该数据有关的唯一数据。

我希望我已经对此进行了解释。请帮助我在努力寻找方法。

1 个答案:

答案 0 :(得分:0)

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

两个示例数据帧:

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”。