【发布时间】:2021-12-27 21:16:51
【问题描述】:
我有一个字典,键是日期时间,值是那天的数据帧,如下所示:
dict = {dt.datetime(2021,11,1):pd.DataFrame({'team':['horses','eagles'],
'rating':[15,20]}),
dt.datetime(2021,11,2):pd.DataFrame({'team':['horses','eagles'],
'rating':[35,50]})}
{datetime.datetime(2021, 11, 1, 0, 0):
team rating
0 horses 15
1 eagles 20,
datetime.datetime(2021, 11, 2, 0, 0):
team rating
0 horses 35
1 eagles 50}
我还有一个单独的数据框,其中包含日期时间列和同一行中的这些团队的名称,如下所示:
df = pd.DataFrame({'date':[dt.datetime(2021,11,1),dt.datetime(2021,11,2)],
'team_1':'horses',
'team_2':'eagles'})
date team_1 team_2
0 2021-11-01 horses eagles
1 2021-11-02 horses eagles
我想做的是遍历字典,以便如果 datetime 键与 df 的日期列中的日期匹配,则从值中获取数据并将其合并到 df 中的团队以创建最终数据框,像这样:
date team_1 team_1_rating team_2 team_2_rating
0 2021-11-01 horses 15 eagles 20
1 2021-11-02 horses 35 eagles 50
我尝试遍历字典并将数据与此代码合并:
for key, value in dict.items:
if key == df['date']:
final_df = pd.merge(df,value,left_on = ['team_1','team_2'], right_on = 'team')
但我收到类似的错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我不太确定这是否是一个好方法,但任何帮助将不胜感激!
【问题讨论】:
-
不要使用
dict,它是Python中的保留关键字。而是使用my_dict或类似的 -
建议使用
pandas.Timestamp而不是datetime.datetime -
此外,虽然很明显您已尝试提供所有代码,但仍缺少一些内容/这将使尝试帮助您的人更容易。不要将您的代码分成块,因为它很难组合起来以尝试复制错误。还包括您拥有的任何进口商品。有关更多信息,请参阅minimal reproducible example
标签: python pandas dataframe dictionary merge