gpt4 book ai didi

python - 如何根据某些条件(包括日期时间)映射多个 Pandas Dataframe 中的值?

转载 作者:太空宇宙 更新时间:2023-11-03 21:02:33 26 4
gpt4 key购买 nike

我有 2 个 pandas 数据框,df_pedf_merged。两个数据框都有几行和几列。现在,我想使用这些数据框完成一些具体的事情:

  1. df_merged中,有一个名为ST的列,其中包含各种事件的时间戳,格式如下: (2017-08-27 00:00:00)。在df_pe中,有2列TonToff,其中包含事件开始的时间和事件结束的时间。例如。 (随机行的 Ton 值:2018-08-17 01:20:00Toff2018-08-17 02:30:00)。
  2. 其次,df_pe中有一个列,即EC。我有另一个名为 df_uniqueal 的数据框,它还有一个名为 EC 的列。我想做的是:

    a.对于 df_merged 中的所有行,只要 ST 值在 df_pe 中的 TonToff 持续时间内,在 df_merged 中创建 2 个新列:ECED。将数据帧 df_pe 中的 EC 值追加/放入此新列,同时将数据帧 df_uniqueal 的值放入新列列ED(最终是df_peEC的映射版本,用于获取df_uniqueal中的ED )。如果没有任何条件匹配/此过程后留下 NaN(缺失值),请将字符串 "NF" 放入 df_merged' s 新的 ED 列,同时将整数 0 放入 df_merged 的新 EC 列。

我探索过SO和SE,但没有发现任何实质性的东西。非常感谢在这方面的任何帮助。

这是我尝试在Python中使用for循环来迭代数据帧以完成第一个条件,但它会永远运行(永无止境),我不认为这是最好的方法来实现这一点。

for i in range(len(df_merged)):
for j in range(len(df_pe)):
if df_pe.TOn[j] < df_merged.ST[i] < df_pe.TOff[j]:
df_merged.EC[i] = df_pe.EC[j]
df_merged.ED[i] = df_uniqueal.ED[df_processed.EC[j]]
else:

df_merged.EC[i] = 0
df_merged.ED[i] = "NF"

编辑请参阅图像以了解预期输出和数据帧的婴儿示例。 Expected Output and Baby Example

相关列以粗体显示(请注意,列号可能不同,但本示例中的列名称相同)。

最佳答案

如果我正确理解了这个问题,希望这能让您开始。

for i,val in df_merged['ST'].items():
bool_idx = (df_pe['TOn']<val)&(val<df_pe['Toff'])
if df_pe[bool_idx]['EC'].empty:
df_merged.loc[i,'EC']=0
df_merged.loc[i,'ED']="NF"
else:
value_from_df_pe = df_pe[bool_idx]['EC']
df_merged.loc[i,'EC']= value_from_df_pe
value_from_df_uniqueal = df_uniqueal[df_uniqueal['EC']==value_from_df_pe]['EC']
df_merged.loc[i,'ED']= value_from_df_uniqueal

请注意,我已在任何数据上测试了此代码。

关于python - 如何根据某些条件(包括日期时间)映射多个 Pandas Dataframe 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55630971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com