如何合并两个CSV文件以绘制特定值?

时间:2018-07-23 04:16:38

标签: python pandas plot

我有两个CSV文件。

第一个是:

 Date        Machine_ID working_time  
     

2018-07-04 05:42:20 1081083 26200.0
  2018-07-04 05:43:03 1081083 35800.0
  2018-07-04 05:43:12 1081085 58200.0
  2018-07-04 05:43:51 1081083 26200.0
  2018-07-04 05:44:01 1081085 19800.0

另一个是:

 Date        Machine_ID idle_time  
     

2018-07-05 05:42:20 1081090 2200.0
  2018-07-06 05:43:03 1081083 3500.0
  2018-07-04 05:43:12 1081090 5200.0
  2018-07-05 05:43:51 1081083 2600.0
  2018-07-04 05:44:01 1081085 1900.0

两个CSV文件中日期和Machine_ID的顺序都不相同,那么如何针对特定的Date and Machine_Id绘制working_time v/s idle_time

例如:如何为working_time v/s idle_timedate = 2018-07-05绘制machine_id= 1081083

1 个答案:

答案 0 :(得分:0)

我认为我们可以直接使用concat方法:

import pandas as pd
import numpy as np
from io import StringIO
%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (15, 6)    
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

csv_work=StringIO("""Date   Time     Machine_ID working_time  
2018-07-04 05:42:20 1081083 26200.0
2018-07-04 05:43:03 1081083 35800.0
2018-07-04 05:43:12 1081085 58200.0
2018-07-04 05:43:51 1081083 26200.0
2018-07-04 05:44:01 1081085 19800.0""")
df_work=pd.read_csv(csv_work,sep='\s+',parse_dates={"DateTime": ['Date', 'Time']},index_col=0)
csv_idle=StringIO("""Date   Time     Machine_ID idle_time  
2018-07-05 05:42:20 1081090 2200.0
2018-07-06 05:43:03 1081083 3500.0
2018-07-04 05:43:12 1081090 5200.0
2018-07-05 05:43:51 1081083 2600.0
2018-07-04 05:44:01 1081085 1900.0""")
df_idle=pd.read_csv(csv_idle,sep='\s+',parse_dates={"DateTime": ['Date', 'Time']},index_col=0)

df=pd.concat([df_work,df_idle])
df.groupby(df['Machine_ID']).get_group(1081083)['2018-07-05'].drop('Machine_ID',axis=1).plot()

您的数据似乎不适合分析。