我有两个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_time
和date = 2018-07-05
绘制machine_id= 1081083
?
答案 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()
您的数据似乎不适合分析。