python - 将行转换为熊猫列下的值列表
问题描述
如何使用 pandas 获得所需的输出:将行转换为列表列
输入格式:
col1 col2 col3 col4
1 a r1 2019-10-10
1 a r2 2019-10-11
1 a r3 2019-10-12
2 b r4 2019-10-08
2 b r5 2019-10-09
期望的输出:
col1 col2 col4 new_column
1 a 2019-10-10 []
1 a 2019-10-11 [r1]
1 a 2019-10-12 [r1,r2]
2 b 2019-10-08 []
2 b 2019-10-09 [r4]
解决方案
我认为这应该做的工作!(假设您的日期列是日期时间类型而不是字符串):
dictionary = df.groupby(by=['col1','col2']).apply(lambda df2: df2[['col3', 'col4']].to_dict('index')).to_dict()
def my_func(col1_value, col2_value, my_date, my_dictionary):
df_bis = pd.DataFrame.from_dict(my_dictionary[(col1_value, col2_value)], orient='index')
return df_bis[df_bis['col4'] < my_date].col3.to_list()
df['new_col'] = df.apply(lambda row: my_func(row.col1, row.col2, row.col4, dictionary),
axis = 1)
推荐阅读
- debugging - AutoMock CreateInstance 要模拟的类型必须是接口、委托或非密封、非静态类
- nginx - Gunicorn:无法激活服务错误
- c - 试图绕开一些非阻塞的 mpi 行为
- reactjs - react.js 中的基本客户端服务器交互
- javascript - 使用click提交ajax表单数据
- laravel - 混合清单不存在 - 在 Hostgator 共享主机中部署 laravel 时 Laravel Fortify Jetstream 登录/注册问题
- python - 数据框:如何从 DatetimeIndex 获取 Period 对象列(日历+会计年度和月份)?
- reactjs - 如何解决 Apollo 的“在上下文中找不到“客户端”...”问题?
- python - Mypy: Generic container with some methods only valid if extra protocols apply
- sql - 单个 SELECT 请求中的 Fusion 2 id 列