0
0
我有一个看起来类似于下面的数据集,并希望创建两个新列。其中一列将返回前一年,如果为0则返回NAN。第二列将返回下一个年份,如果没有,则在年份后面加4。
数据表:
setup
df = pd.DataFrame(
{
"Name":["Foo","Foo","Foo","Bar","Bar"],
"Year":[2012, 2017, 2022, 2015, 2024],
"Count":[0,1,2,0,1]
}
)
<<p>解决方案/strong>def make_data(df_sub):
years = pd.Series(df_sub["Year"].sort_values().unique())
df_sub["Prior"] = df_sub["Year"].map(dict(zip(years, years.shift()))).mask(df_sub["Count"] == 0)
df_sub["Next"] = df_sub["Year"].map(dict(zip(years, years.shift(-1)))).fillna(df_sub["Year"]+4)
return df_sub
df.groupby("Name").apply(make_data)
得到
Name Year Count Prior Next
0 Foo 2012 0 NaN 2017.0
1 Foo 2017 1 2012.0 2022.0
2 Foo 2022 2 2017.0 2026.0
3 Bar 2015 0 NaN 2024.0
4 Bar 2024 1 2015.0 2028.0
解决方案根据Name
值拆分数据帧。对于每一个子数据框,它对年份进行排序,并为下一年和前一年创建地图。对于Prior
列,它将屏蔽Count
列为0的任何值。对于'Next '列,它将用年份+ 4填充空值。
感谢@Riley提供的setup df代码。
我们可以用numpy.where
。
df["Prior"] = np.where(df.groupby("Name")["Count"].shift(1).isnull(),np.nan, df["Year"].shift(1))
df["Next"] = np.where(df.groupby("Name")["Count"].shift(-1).isnull(), df["Year"] + 4, df["Year"].shift(-1))
> df
Name Year Count Prior Next
0 Foo 2012 0 NaN 2017.0
1 Foo 2017 1 2012.0 2022.0
2 Foo 2022 2 2017.0 2026.0
3 Bar 2015 0 NaN 2024.0
4 Bar 2024 1 2015.0 2028.0
因为np.nan
是float
类型。整列也将是float类型
相关内容
- 没有找到相关文章
最新更新
- 如何在aws环境中为api网关V2连接路由附加lambda授权器
- 我如何让我的侧边栏渲染到我的内容的左边,而不是堆叠两个组件?
- 如何在电源查询m中按给定日期查找4周滚动周期的周数
- 为什么UIKit在动画取消后计算错误的安全区域?
- firebase应用程序的数据收集需要在Play Console的数据安全表单中声明吗?
- 具有可变宽度的可变列的CSS图像流
- 如何在jsonnet中做适当的for循环?
- c#:返回语句末尾的生成器
- 邮差-从HTML描述列表中提取值
- 如何使用自动化将GLTF转换为Adobe 3D PDF
- 检查 isset($_POST[ "submit" ]) 两次不起作用
- 颤振中的_TypeError(类型'Null'不是类型"字符串"的子类型
- Spring Cosmos -一些请求响应缓慢,卡在不安全.等几秒钟
- querystring是太长的错误在uwp b2c应用c#.net应用程序
- 使用 M1 在 Mac 上正确设置反应原生(找不到正确答案)
- 创建一个检查完全数的函数
- c语言 - 尽管 ncursesw(ncursesw(ncurses 的广泛变体)被明确链接,但"mvaddwstr"函数的隐式声明
- 我想使用用户的输入,然后使用 case 语句调用函数
- c++ std::vector的双元素反向数组
- 如何为Rust改变Rocket框架中的状态?
- 带有enum模板参数的模板类的工厂
- 如何删除仅在第3列之后带有NaN的行,
- JavaDoc,项目作为一个整体的顶级文档
- 将list-like传递给.loc或带有任何缺失标签的[]将来会引发KeyError,您可以使用.reindex()作为
- React TS改变对象值
- 如何通过使用Python给出坐标来显示谷歌地球上的图像?
- 异常处理和文件操作是否在此Python代码片段中正确实现?
- 是否有Flink sink连接器到ksqldb表?
- 不和谐.嵌入更新与角色反应
- Spotfire过滤问题
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium