[英]Conditional fill up of dataframe based on other dataframe
我有兩個數據框。 第一個數據幀df
包含 5 分鍾(返回)數據和索引的小時和分鍾
import pandas as pd
dates = pd.date_range(start='2018-01-01', end='2018-01-05', freq='5T')
df = pd.DataFrame(np.random.randn(len(dates),1), index=dates, columns=list(['Ret']))
df['Hour'] = df.index.hour
df['Minute'] = df.index.minute
tmp = df['Ret'].groupby([df['Hour'],df['Minute']]).mean().to_frame()
所以現在tmp
包含一個多索引數據幀,它有兩個級別的小時和分鍾。 我現在想要做的是在df
中創建一個新列,我從數據幀tmp
選擇正確的值並將它們放回df
數據幀。
所以基本上我想通過在tmp
查找df['Hour']
和df['Minute']
並返回正確的值來在df
創建一個新列,但我似乎無法讓它工作。
使用merge
,但要注意語法:
result = df.merge(tmp, left_on=['Hour', 'Minute'], right_index=True, how='left')
result.head()
Ret_x Hour Minute Ret_y
2018-01-01 -0.751599 0 0 -0.035756
2018-01-02 -0.650874 0 0 -0.035756
2018-01-03 -1.110701 0 0 -0.035756
2018-01-04 0.944097 0 0 -0.035756
2018-01-05 1.390296 0 0 -0.035756
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.