根据条件从另一个数据框中填充 NaN 值
Filling NaN values from another dataframe based on a condition
我需要根据两个数据帧之间的条件为一个数据帧中的某些列填充 NaN 值。
DF1 有 SOL(行首)和 EOL(行尾)列,而 DF2 每个条目都有 UTC_TIME。
对于 DF2 中 UTC_TIME >= SOL 且 <= DF1 中每条记录的 EOL 的每个点,必须为 DF2 中的该行分配 LINE、DEVICE 和 TAPE_FILE.
因此,根据 UTC_TIME 在 DF1 中的 SOL/EOL 时间,每个点都将被分配一个 LINE、DEVICE 和 TAPE_FILE。
我正在尝试像这样对每一列使用 numpy where 函数
df2['DEVICE'] = np.where(df2['UTC_TIME'] >= df1['SOL'] and <= df1['EOL'])
或者使用for循环遍历每一行
for point in points:
if df1['SOL'] >= df2['UTC_TIME'] and df1['EOL'] <= df2['UTC_TIME']
return df1['DEVICE']
我是 python 的新手,显然不擅长编写语法。如果有人可以提供一些指导或帮助,我将不胜感激。
试试 merge_asof
:
#convert to datetime if needed
df1["SOL"] = pd.to_datetime(df1["SOL"])
df1["EOL"] = pd.to_datetime(df1["EOL"])
df2["UTC_TIME"] = pd.to_datetime(df2["UTC_TIME"])
output = pd.merge_asof(df2[["ID", "UTC_TIME"]],df1,left_on="UTC_TIME",right_on="SOL").drop(["SOL","EOL"],axis=1)
>>> output
ID UTC_TIME LINE DEVICE TAPE_FILE
0 1 2022-04-25 06:50:00 1 Huntec 10
1 2 2022-04-25 07:15:00 2 Teledyne 11
2 3 2022-04-25 10:20:00 3 Huntec 12
3 4 2022-04-25 10:30:00 3 Huntec 12
4 5 2022-04-25 10:50:00 3 Huntec 12
我需要根据两个数据帧之间的条件为一个数据帧中的某些列填充 NaN 值。
DF1 有 SOL(行首)和 EOL(行尾)列,而 DF2 每个条目都有 UTC_TIME。
对于 DF2 中 UTC_TIME >= SOL 且 <= DF1 中每条记录的 EOL 的每个点,必须为 DF2 中的该行分配 LINE、DEVICE 和 TAPE_FILE.
因此,根据 UTC_TIME 在 DF1 中的 SOL/EOL 时间,每个点都将被分配一个 LINE、DEVICE 和 TAPE_FILE。
我正在尝试像这样对每一列使用 numpy where 函数
df2['DEVICE'] = np.where(df2['UTC_TIME'] >= df1['SOL'] and <= df1['EOL'])
或者使用for循环遍历每一行
for point in points:
if df1['SOL'] >= df2['UTC_TIME'] and df1['EOL'] <= df2['UTC_TIME']
return df1['DEVICE']
我是 python 的新手,显然不擅长编写语法。如果有人可以提供一些指导或帮助,我将不胜感激。
试试 merge_asof
:
#convert to datetime if needed
df1["SOL"] = pd.to_datetime(df1["SOL"])
df1["EOL"] = pd.to_datetime(df1["EOL"])
df2["UTC_TIME"] = pd.to_datetime(df2["UTC_TIME"])
output = pd.merge_asof(df2[["ID", "UTC_TIME"]],df1,left_on="UTC_TIME",right_on="SOL").drop(["SOL","EOL"],axis=1)
>>> output
ID UTC_TIME LINE DEVICE TAPE_FILE
0 1 2022-04-25 06:50:00 1 Huntec 10
1 2 2022-04-25 07:15:00 2 Teledyne 11
2 3 2022-04-25 10:20:00 3 Huntec 12
3 4 2022-04-25 10:30:00 3 Huntec 12
4 5 2022-04-25 10:50:00 3 Huntec 12