我有一個資料框 df,我希望用戶在其中輸入一個整數,該整數將針對給定條件移動特定日期。
資料
start m1 m2 de re type
0 2018-01-01 2022-01-01 2022-04-01 2022-05-01 2022-06-01 aa
1 2018-01-01 2022-01-01 2022-04-01 2022-05-01 2022-06-01 aa
2 2018-01-01 2022-01-01 2022-04-01 2022-05-01 2022-06-01 bb
期望的
**User input**: 9
start m1 m2 de re type
0 2018-01-01 2022-10-01 2023-01-01 2023-02-01 2023-03-01 aa
1 2018-01-01 2022-10-01 2023-01-01 2023-02-01 2023-03-01 aa
2 2018-01-01 2022-10-01 2023-01-01 2022-05-01 2022-06-01 bb
#user 輸入整數:9。我們現在將 9 添加到“m2”列 4 9 中的月份,我們現在是 2023 年 1 月 1 日。
(2022 年 4 月 1 日在“m2”列中。我們將 9 個月添加到該日期,即 2023 年 1 月 1 日)
正在做
month_value = df["m2"] = pd.DateOffset(months=int(input()))
if(df[type] == 'aa'): #condition applied
d = {
'm1': pd.DateOffset(months=3), #we offset m1, 3 months from m2
'de': pd.DateOffset(months=1),
're': pd.DateOffset(months=2),
}
s = pd.Series(d).rsub(month_value)
df.assign(**{**s, 'm2': month_value})
else:
e = {
'm1': pd.DateOffset(months=3),
}
s1 = pd.Series(e).rsub(month_value)
df.assign(**{**s1, 'm2': month_value})
我正在研究。任何建議表示贊賞。
uj5u.com熱心網友回復:
您可以為此使用 lambda 函式:
import pandas as pd
df = pd.DataFrame({'m1': [pd.Timestamp('2022-10-01'), pd.Timestamp('2022-10-01'), pd.Timestamp('2022-10-01')],
'm2': [pd.Timestamp('2022-04-01'), pd.Timestamp('2022-04-01'), pd.Timestamp('2022-04-01')],
'de': [pd.Timestamp('2023-02-01'), pd.Timestamp('2023-02-01'), pd.Timestamp('2022-05-01')],
're': [pd.Timestamp('2023-03-01'), pd.Timestamp('2023-03-01'), pd.Timestamp('2022-06-01')],
'type': ['aa', 'aa', 'bb']})
df["m2"] = pd.DateOffset(months=int(input('Offset: ')))
# Shift the dependent columns m1, de, re when type is 'aa'
df[df.type == 'aa'] = df[df.type == 'aa'].assign(m1 = lambda row: row['m2'] - pd.DateOffset(months=3))
df[df.type == 'aa'] = df[df.type == 'aa'].assign(de = lambda row: row['m2'] pd.DateOffset(months=1))
df[df.type == 'aa'] = df[df.type == 'aa'].assign(re = lambda row: row['m2'] pd.DateOffset(months=2))
# Shift only m1 when type is not 'aa'
df[df.type != 'aa'] = df[df.type != 'aa'].assign(m1 = lambda row: row['m2'] - pd.DateOffset(months=3))
print(df)
uj5u.com熱心網友回復:
您可以使用 MonthOffset 將用戶輸入月份添加到所需列
df = pd.DataFrame({'m1': [pd.Timestamp('2022-10-01'), pd.Timestamp('2022-10-01'), pd.Timestamp('2022-10-01')],
'm2': [pd.Timestamp('2022-04-01'), pd.Timestamp('2022-04-01'), pd.Timestamp('2022-04-01')],
'type': ['aa', 'aa', 'bb']})
user_input = 9
df['m2'] = df['m2'] pd.offsets.MonthOffset(user_input)
你得到
m1 m2 type
0 2022-10-01 2023-01-01 aa
1 2022-10-01 2023-01-01 aa
2 2022-10-01 2023-01-01 bb
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410493.html
標籤:
上一篇:更改值檢測numpyPython
