识别多个数据帧中的重叠行

时间:2016-09-22 15:52:10

标签: python pandas merge inner-join concat

我有两个数据框,比如

DF1

Time      accler
19.13.33  24
19.13.34  24
19.13.35  25
19.13.36  27
19.13.37  25
19.13.38  27
19.13.39  25
19.13.40  24

DF2

 Time      accler
19.13.29  24
19.13.30  24
19.13.31  25
19.13.32  27
19.13.33  25
19.13.34  27
19.13.35  25
19.13.36  24

这两个数据帧在19.13.33到19.13.36的列时间内重叠。因此,当存在重叠时,我只想要由重叠行组成的数据帧

预期产出

DF1

 Time      accler
19.13.33  24
19.13.34  24
19.13.35  25
19.13.36  27

DF2

Time      accler
19.13.33  25
19.13.34  27
19.13.35  25
19.13.36  24

或者我也可以拥有concat个数据帧,这将有助于进一步处理。

我尝试merge但是没有工作,因为数据帧是根据csv文件的数量动态创建的。我尝试连接所有数据帧,并尝试迭代行,但没有找到方法。

1 个答案:

答案 0 :(得分:3)

您可以使用merge,默认参数String expression1 = "//topping[contains(@id,'5002')]/parent::* | //topping[contains(@id,'5002')]/preceding-sibling::*/batter"; NodeList nodeList1 = (NodeList) xpath.compile(expression1).evaluate(doc, XPathConstants.NODESET); for (int i = 0; i < nodeList1.getLength(); i++) { Node nNode = (Node) nodeList1.item(i); if (nNode.getNodeType() == Node.ELEMENT_NODE) { Element eElement = (Element) nNode; if ( eElement.getNodeName().equals("item")) { System.out.println("Item ID : "+ eElement.getAttribute("id")); } else if ( eElement.getNodeName().equals("batter")) { System.out.println("Batter : " + eElement.getTextContent() ); } } } 可以省略:

how='inner'

如果您需要df = pd.merge(df1, df2, on='Time') print (df) Time accler_x accler_y 0 19.13.33 24 25 1 19.13.34 24 27 2 19.13.35 25 25 3 19.13.36 27 24 df1 = df[['Time','accler_x']].rename(columns={'accler_x':'accler'}) print (df1) Time accler 0 19.13.33 24 1 19.13.34 24 2 19.13.35 25 3 19.13.36 27 df2 = df[['Time','accler_y']].rename(columns={'accler_y':'accler'}) print (df2) Time accler 0 19.13.33 25 1 19.13.34 27 2 19.13.35 25 3 19.13.36 24 多个merge使用reduce

DataFrames