仍然没有得到大熊猫的影响,我正在尝试使用合并在Pandas中加入两个数据帧。我已经在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'都是dtype对象,我不知道这是否是错误的来源,因为我能找到的唯一问题就是围绕匹配不同的dtypes。
我要做的是将两个数据框合并到两个' 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
非常感谢任何帮助。
答案 0 :(得分:0)
在阅读parse_dates
文件时,您需要csv
,以便两个数据框中的Date_Time
列都是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'])
然后进行合并。
答案 1 :(得分:0)
您可以使用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)