【问题标题】:Iterate through dates matching with columns using Python使用 Python 遍历与列匹配的日期
【发布时间】:2020-06-09 11:42:08
【问题描述】:

我有一个包含 366 列的表格文件。其中,一个代表目标日期,另一个 365 代表一年中某一天的温度。我添加了一个名为“温度”的新列,我想用我的日期字段的相应温度值填写此列。 很难解释,请看例子:

DateFin   b1_T_M01  b2_T_M01 Temperature
27-01-18    5.6      3.8   
06-01-18    5.6      4.2
02-01-18    6.3      4.6        4.6
01-01-18    3.2      5.9        3.2

从 bx_TMx 开始,b 表示日期,M 表示月份。因此,例如 “b1_T_M01” 指的是第一个月第一天(一月一日)的温度值。 说我想减少维度的数量,只保留我感兴趣的那一天的信息。例如,对于日期 27-01-18,我需要从 01 月(b27_TM01)开始的乐队 27。我不知道如何使用不同的维度进行迭代,我被冻结了。有没有人知道如何使用 python 以迭代方式做到这一点? 非常感谢您的关注!

【问题讨论】:

  • 您能解释一下您如何选择不同的波段(例如 (b27_TM01))以过滤该值。

标签: python loops iteration dimensions


【解决方案1】:

您可以从日期列中构建一个字符串,以获得正确的值:

df['DateFin'] = pd.to_datetime(df['DateFin'], dayfirst=True)

def my_date_string(date):
    return 'b' + str(date.day) + '_T_M' + '{:02d}'.format(date.month)


df['Temperature'] = df.apply(lambda row:
         row[my_date_string(row['DateFin'])]
         if my_date_string(row['DateFin']) in df.columns
         else '', axis=1)
print(df)

     DateFin  b1_T_M01  b2_T_M01 Temperature
0 2018-01-27       5.6       3.8            
1 2018-01-06       5.6       4.2            
2 2018-01-02       6.3       4.6         4.6
3 2018-01-01       3.2       5.9         3.2

【讨论】:

  • 干净高效!有效!非常感谢@luigigi
猜你喜欢
  • 2018-04-29
  • 2017-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
相关资源
最近更新 更多