[英]How to calculate number of days until weekend or day off in pandas dataframe
[英]Calculate number ofdays until first value appears in pandas dataframe
我有以下數據集:
import pandas as pd
from datetime import datetime
import numpy as np
date_rng = pd.date_range(start='2020-07-01', end='2020-07-10', freq='d')
l1 = [np.nan, np.nan, 3, np.nan, np.nan, 4, np.nan, np.nan, 5, np.nan]
l2 = [np.nan, np.nan, np.nan, np.nan, np.nan, 4, np.nan, np.nan, 1, 3]
df = pd.DataFrame({
'date':date_rng,
'value':l1,
'group':'a'
})
df2 = pd.DataFrame({
'date':date_rng,
'value':l2,
'group':'b'
})
df = df.append(df2, ignore_index=True)
df
我想計算每組出現第一個值之前的天數。 我能夠使用以下代碼找到日期,但會獲得每個組的天數。
# first valid valuefor each column
df.set_index(["date"]).groupby('group')['value'].apply(pd.Series.first_valid_index)
編輯:這將是預期的結果:
columns = ["group", "number_of_days"]
df_features = pd.DataFrame([["a", 3],
["b", 6],],
columns=columns)
df_features
對GroupBy.first
的第一天使用GroupBy.first
,減去Series.sub
,通過Series.sub
轉換為天Series.dt.days
,加1
並轉換為2 column
DataFrame:
s1 = df.groupby('group')['date'].first()
s2 = df.set_index(["date"]).groupby('group')['value'].apply(pd.Series.first_valid_index)
df = s2.sub(s1).dt.days.add(1).reset_index(name='number_of_days')
print (df)
group number_of_days
0 a 3
1 b 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.