繁体   English   中英

合并两个数据框熊猫

[英]Merging two data frames Pandas

仍然无法摆脱熊猫的困扰,我正在尝试使用merge在熊猫中加入两个数据框。 我已将CSV读入两个数据帧(在下面的代码中分别命名为dropData和deosData)。 两个数据帧均具有“ Date_Time”列,该列是经过分析的日期和时间信息列,用于为每个条目创建唯一的ID。 deosData文件是我全年的观察值,我试图将它们与dropData中的相应条目进行匹配。

CSV文件:

deosData: https ://www.dropbox.com/s/3rr7hf7jzrmxdke/inputDeos.csv ? dl =0

dropData: https ://www.dropbox.com/s/z9mv4xccjzlsyif/inputDrop.csv ? dl =0

我已经阅读了合并功能的文档,并尝试了以下迭代中的以下代码,到目前为止,我只能使用具有正确标题行的空白数据帧,或者将两个数据帧合并在0上-默认分配的(N-1)个索引:

我的代码:

import pandas as pd
import numpy as np
import os
from matplotlib import pyplot as plt

#read in CSV to dataframe
dropData=pd.read_csv("inputDrop.csv", header=0, index_col=None)
deosData=pd.read_csv("inputDeos.csv", header=0, index_col=None)

#merging dataframes into single sf
merge=pd.merge(dropData,deosData, how='inner', on='Date_Time')
#comment out during debugging
#merge.to_csv('output.csv', sep=',', headers=True, index=False)

#check merge dataframe creation
print merge.head(1)

在搜索SE和Doc之后,我尝试重置索引,忽略索引列,将“ Date_Time”列复制为单独的索引并尝试在新列上合并,我尝试使用“ on = None”,“ left_on” '和'right_on'作为'Date_Time'的排列无济于事。 我已经检查了列数据类型,“ Date_Time”和“ date_Time”都是dtype对象,我不知道这是否是错误的根源,因为我能找到的唯一问题就是将不同的dtype相互匹配。

我想要做的是将两个数据帧合并,其中两个“ Date_Time”列相交。 例如:

    Date_Time,Volume(Max),Volume(Sum),Volume(Min),Volume(Mean),Diameter(Count),Diameter(Max),Diameter(Sum),Diameter(Min),Diameter(Mean),Depth(Sum),Velocity(Max),Velocity(Sum),Velocity(Min),Velocity(Mean), Air Temperature (deg. C), Relative humidity (%), Wind Speed (m.s-1), Wind Direction (deg.), Wind Gust Speed (5) (m.s-1), Barometric Pressure (mbar), Gage Precipitation (5) (mm)
9/1/2014 0:00,2.266188524,2.989272461,0.052464219,0.332141385,9,1.629668,5.972978,0.464467,0.663664222,0.003736591,2.288401,16.889656,1.495487,1.876628444,22.5,99,0,216.1,0.4,1016.2,0

任何帮助将不胜感激。

您需要parse_dates读书时csv文件,以便Date_Time两个dataframes列的pd.Timestamp对象,而不是原始字符串。 (如果您查看csv文件,则一个采用ISO格式YYYY-MM-DD HH:MM:SS而另一个则采用MM/DD/YYYY HH:MM )尝试以下代码:

#read in CSV to dataframe
dropData = pd.read_csv("inputDrop.csv", header=0, index_col=None, parse_dates=['Date_Time'])
deosData = pd.read_csv("inputDeos.csv", header=0, index_col=None, parse_dates=['Date_Time'])

然后合并

您可以使用join ,但是首先需要设置索引:

dropData=pd.read_csv('.../inputDrop.csv', header=0, index_col='Date_Time', parse_dates=True)
deosData=pd.read_csv('.../inputDeos.csv', header=0, index_col='Date_Time', parse_dates=True)
dropData.join(deosData)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM