[英]How to Extract Specific Values from Iterating Through Two Dataframes and Dynamically Append?
我正在嘗試使用現有 dataframe 中的值來創建子集數據幀(或系列)並將這些值與現有的 dataframe 進行比較,以最終在原始 Z6A8064ZB55DF47945505700 中創建一個新列
逐步的過程是:
我已經采取但收到錯誤的一些嘗試是:比較 dfs 之間的日期值:
df1.loc[df1['actual_date']==df2[df2['min_date']]
#Produces unexpected EOF while parsing
df['actual_date']==df2['min_date']
#Produces ValueError: Can only compare identically-labeled Series objects
遍歷條件:
for each in range(len(df1):
if df1[df1['actual_date']]==df2[df2['min_date']]:
df1['exctract_value_new']=df2['extract_value']
#Produces: KeyError: "None of [DatetimeIndex....are in the [columns]"
我嘗試搜索值和鍵錯誤,但無法理解有關索引的線程。 具體來說,我不確定如何重新格式化 df1 和/或 df2 以這種方式比較日期值,然后根據兩個數據幀中的條件何時匹配來提取單獨的列。
以下是使用的示例數據:
df1(基礎)
實際日期 | 提取值 |
---|---|
2021-01-22 | 22 |
2021-01-23 | 24 |
2021-01-24 | 15 |
2021-02-22 | 16 |
2021-02-05 | 34 |
2021-02-04 | 18 |
df2
月 | min_date |
---|---|
2021-01-01 | 2021-01-22 |
2021-02-01 | 2021-02-04 |
2021-03-01 | 2021-03-01 |
df1 的最終目標
實際日期 | min_date | extract_value_new | extract_value_original |
---|---|---|---|
2021-01-22 | 2021-01-22 | 22 | 22 |
2021-01-23 | 2021-01-22 | 22 | 24 |
2021-02-04 | 2021-02-04 | 18 | 18 |
2021-02-05 | 2021-02-04 | 18 | 34 |
感謝任何幫助!
您可能想查看pd.merge_asof
...solution 這里給了我想要的表!
merge_asof
本質上讓我們加入兩列中“最接近”的值。
import pandas as pd
import requests
from datetime import datetime, timedelta
df1 = pd.read_csv('df1.csv')
df2 = pd.read_csv('df2.csv')
datetime_format = '%Y-%m-%d' # format of date (needs to be a datetime to merge in pandas)
tolerance = timedelta(days=1) # the tolerance to join dates on
# convert our dates
df1['actual_date'] = pd.to_datetime(df1['actual_date'], format=datetime_format)
df2['min_date'] = pd.to_datetime(df2['min_date'], format=datetime_format)
# sort...
df1.sort_values(by='actual_date', inplace=True)
out = pd.merge_asof(df1, df2, left_on='actual_date', right_on='min_date', tolerance=tolerance).dropna()
給我:
actual_date extract_value month min_date
0 2021-01-22 22 2021-01-01 2021-01-22
1 2021-01-23 24 2021-01-01 2021-01-22
3 2021-02-04 18 2021-02-01 2021-02-04
4 2021-02-05 34 2021-02-01 2021-02-04
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.