python-3.x - 根据其他列值从数据框列中的列表中删除最后一个元素
问题描述
我有一个这样的数据框df:
col1 col2 col3 col4 col5
Type Key Date first found Date last found Images
0 A 1 2020-08-11 07:28:18 2020-08-11 07:28:18 ['image1', 'image2, 'image3']
1 A 2 2020-08-11 07:28:18 2020-08-12 07:28:18 ['image1', 'image2, 'image3']
2 B 3 2020-08-11 07:28:18 2020-08-13 07:28:18 ['image1', 'image2, 'image3']
3 B 4 2020-08-11 07:28:18 2020-08-13 07:28:18 ['image1', 'image2, 'image3']
4 C 5 2020-08-11 07:28:18 2020-08-13 07:28:18 ['image1', 'image2, 'image3']
如果类型为“A”,我想做的是删除最后一个元素“image3”。预期结果:
col1 col2 col3 col4 col5
Type Key Date first found Date last found Images
0 A 1 2020-08-11 07:28:18 2020-08-11 07:28:18 ['image1', 'image2]
1 A 2 2020-08-11 07:28:18 2020-08-12 07:28:18 ['image1', 'image2]
2 B 3 2020-08-11 07:28:18 2020-08-13 07:28:18 ['image1', 'image2, 'image3']
3 B 4 2020-08-11 07:28:18 2020-08-13 07:28:18 ['image1', 'image2, 'image3']
4 C 5 2020-08-11 07:28:18 2020-08-13 07:28:18 ['image1', 'image2, 'image3']
我试过没有成功:
del df.loc[df["Type"] == 'A']['Images'][:-1]
和
df.loc[df["Type"] == 'A']['Images'] = df.loc[df["Type"] == 'A']['Images'].pop()
解决方案
尝试使用str
访问器:
df.loc[df["Type"] == 'A', 'Images'] = df['Images'].str[:-1]
推荐阅读
- django - 如何在覆盖的 save() 方法中从 ManyToManyField 写入和检索数据?
- sql - 如何在MS Access中检索尚未放入交叉表的数据?
- php - PHP中的按钮编程
- kotlin - 如何为文件添加顶级 KDoc?
- oracle-apex - 我如何通过动态操作将文件插入到顶点集合表中的 blob001 列中
- c# - 是否可以在正则表达式中放置一个字符串变量?
- php - PHPUnit 错误 - 无法使用 MAMP 服务器从命令行运行 Laravel 测试
- python - 在 python 项目上一起工作的最佳地点?
- php - 在准备好的语句中传递一个文字变量和占位符?
- r - 有没有办法获取 R 中的时差(日期戳不一致)?