【问题标题】:Updating values using Python user input使用 Python 用户输入更新值
【发布时间】:2022-01-17 09:09:36
【问题描述】:

我有一个数据集,每当更新“更新”列中的日期值时,另一个 列也将更新。逻辑是:

Date1 is 3 months from Date2
Date2 is 1 month from Date3
and Update is 1 month from Date3

唯一变化的数据是日期,这些数据基本上会根据用户输入发生变化。

数据

Date1       Date2       Date3       Update
1/1/2021    4/1/2021    5/1/2021    6/1/2021
5           2           1           1
        

希望

输入提示将询问用户他们希望输入的日期值。 用户输入日期“2021 年 8 月 1 日”,这会更新剩余列的日期值。

Date1       Date2       Date3       Update
3/1/2021    6/1/2021    7/1/2021    8/1/2021
5           2           1           1

正在做

我相信我可以结合使用函数和用户提示来解决这个问题。

#take input
datevalue = input("Enter date value: ")
print(datevalue)




#use input variable in function or script to create date update
s = df['Update'].str.replace(r'(\S+) (\S+)', r'\2\1')
df['Update'] = (pd.PeriodIndex(s, freq='D') + 3).strftime('D%q %Y')

我正在寻找关于如何最好地解决此问题的一些起点建议或良好的基础/文档。我还在研究。任何建议表示赞赏。

【问题讨论】:

  • 所以基本上,用Update 和用户输入(all dates = all dates + (user input - Update))之间的差异更新所有日期?
  • @user17242583 根据在更新列中输入的日期值更新 Date1 Date2 和 Date3。 Date1 和 Date2 相隔 3 个月。 Date2 和 Date3 相隔 1 个月。 Date3 和 Update 相隔 1 个月。
  • 啊,我明白了,所以用户输入被放入更新列中,然后其他列根据此更新......好吧,应该很容易。
  • 是的,值会根据逻辑和用户输入的内容更新@user17242583

标签: python pandas function numpy input


【解决方案1】:

你的数据格式有点乱,但这应该适合你:

datevalue = pd.to_datetime(input("Enter date value: "))

df = df.T
df[1] = df[1].astype(int)
df.loc['Update', 1] = 0
df[0] = df[1].apply(lambda x: datevalue - pd.DateOffset(months=x))
df = df.T

输出:

>>> df
                 Date1                Date2                Date3               Update
0  2021-03-01 00:00:00  2021-06-01 00:00:00  2021-07-01 00:00:00  2021-08-01 00:00:00
1                    5                    2                    1                    0

【讨论】:

  • 是 'T' 保存用户输入的变量@user17242583? - 或者用户会在哪里输入“08-01-2021”?谢谢
  • 对不起@Lynn!我忘记了那部分。没有T是转置的,是DataFrames的transpose(), a built-in method的别名,基本上是把dataframe旋转了90°。
  • 对,我现在明白了。好的,什么告诉用户输入哪个输入?
  • 现在检查@Lynn。
  • 哦,我看到了带变量的日期值输入- 有关于 lambda 的文档吗?我将研究有关 lambda 的文档
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 1970-01-01
  • 2014-07-23
  • 2017-04-10
相关资源
最近更新 更多