我有两个数据框,比如
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文件的数量动态创建的。我尝试连接所有数据帧,并尝试迭代行,但没有找到方法。
答案 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