我已经开始开发一些脚本来处理和绘制数据。我对将python与pandas结合使用不是很有经验。
问题描述如下。我有一个日期为time
的DataFrame:
Date
0 Jul-03
1 Jul-04
2 Jul-05
3 Jul-06
4 Jul-07
5 Jul-08
6 Jul-09
然后我还有另外两个DataFrame,data1
和data2
:
(data1)
Date Count
0 Jul-05 20
1 Jul-06 10
(data2)
Date Count
0 Jul-09 36
我的目标是获取下面显示的DataFrame以便绘制结果。如您所见,对于data1
DataFrame,从data2
和time
起没有对应的日期时,我需要零。
Date data1 data2
0 Jul-03 0 0
1 Jul-04 0 0
2 Jul-05 20 0
3 Jul-06 10 0
4 Jul-07 0 0
5 Jul-08 0 0
6 Jul-09 0 36
我尝试了很多事情-已经战斗了1天,但仍然没有任何进展:)。希望您能提供帮助!
亲切的问候
答案 0 :(得分:0)
如果将“日期”设置为索引,则行对齐将起作用。
pip install ssl
答案 1 :(得分:0)
对方说:去上网检查文件!
无论如何,这是解决问题的一种方法:
In [1]:
import pandas as pd
columns = ['Date']
data = ['Jul-03'
,'Jul-04'
,'Jul-05'
,'Jul-06'
,'Jul-07'
,'Jul-08'
,'Jul-09']
time = pd.DataFrame(data = data, columns = columns)
columns = ['Date', 'Count']
data = [
['Jul-05', 20],
['Jul-06', 10]
]
data1 = pd.DataFrame(data=data, columns=columns)
data2 = pd.DataFrame(data=[['Jul-09', 36]], columns=columns)
In [2]:
df_list = [data1, data2]
iterator = 0
for df in df_list:
iterator += 1
column_name = 'data' + str(iterator)
time = time.merge(df, how='left', left_on='Date', right_on='Date').fillna(0).rename(columns={'Count':column_name})
time
Out [2]:
Date data1 data2
0 Jul-03 0.0 0.0
1 Jul-04 0.0 0.0
2 Jul-05 20.0 0.0
3 Jul-06 10.0 0.0
4 Jul-07 0.0 0.0
5 Jul-08 0.0 0.0
6 Jul-09 0.0 36.0