python - python - 如何使用数据框列作为python中的参数来定义if-else函数?
问题描述
我需要编写一个函数,然后将其应用于熊猫中的数据框列。我的数据框看起来像这样。数据按 id 排序,然后按周期列排序。
period id column1
0 2013-01-31 5 NaT
1 2013-02-28 5 28 days
2 2013-03-31 5 31 days
3 2013-04-30 5 30 days
4 2016-05-31 6 NaT
5 2016-06-30 6 30 days
6 2016-08-31 6 62 days
新列值应根据 column1 中的值定义:
如果 column1=NaT 或 column1>31 则新列等于周期列中的值
否则 - 新列的值应从其前一行复制:新列第 i 行 = 新列 i-1 行。
我对 python 很陌生,我的代码不起作用:
def f(x):
if not x or x > 31
return x=df['period']
else
return x=x.shift()
df['newcolumn'] = df['column1'].apply(f)
输出应该是这样的:
period id column1 newcolumn
0 2013-01-31 5 NaT 2013-01-31
1 2013-02-28 5 28 days 2013-01-31
2 2013-03-31 5 31 days 2013-01-31
3 2013-04-30 5 30 days 2013-01-31
4 2016-05-31 6 NaT 2016-05-31
5 2016-06-30 6 30 days 2016-05-31
6 2016-08-31 6 62 days 2016-08-31
任何帮助将非常感激。
解决方案
您可以使用df.where(cond, other)
which return return df's row if condition match else return other
df["newcolumn"] = df["period"].where(df["column1"].isnull() | (df["column1"]>pd.TimeDelta("31D")), df["column1"].shift())
推荐阅读
- excel - 根据命名范围的单元格输入设置范围
- python - 如何在 X 个线程之间无休止地迭代
- python - 带条件的熊猫交换值
- python - 使用pyinstaller使其成为.exe后python脚本不起作用
- html - Bootstrap 4 布局问题 Firefox OK / Chrome NOT
- sql-server - 如何将文件中的日期加载到 SQL Server 表中并处理 SSIS 中的其他字符
- solr - 多短语查询未找到我的文档
- css - Effect of styles on component contents
- hashicorp-vault - 尝试使用 kv 时 Hashicorp Vault cli 返回 403
- java - 如何修复错误的数学计算?