python - 如何仅操作属于 Pandas DataFrame 中对象列表的某些元素
问题描述
我有一个 pandas DataFrame,其中几列包含对象列表,如下所示:
Index A B C
0 [1,2,3,] [4,5,6,...20] [1,2,3,...,64]
1 [1,2,3,] [4,5,6,...20] [1,2,3,...,64]
..
..
n [1,2,3,] [4,5,6,...20] [1,2,3,...,64]
当然数字仅供参考。我想总结一下,假设“C”列的前 32 个值是“10”。我尝试以多种方式将应用函数与 lambda 一起使用,但均未成功。你可以帮帮我吗?提前致谢!
解决方案
目前尚不清楚您是否要:
- 将 C 列前 32 行中列表内的所有元素加 10;
- 将 C 列的所有列表的前 32 个元素加 10。
两者都可以使用apply
返回列表理解的 lambda 来完成。
前者:
df.loc[0:32, 'C'] = df.loc[0:32, 'C'].apply(lambda lst: [x+10 for x in lst])
后者:
df.C = df.C.apply(lambda lst: [x+10 if i < 32 else x for i, x in enumerate(lst)])
推荐阅读
- laravel - 识别命名空间、模型和控制器的 PhpStorm 问题
- javascript - setTimeOut 延迟从 html 中的 url 加载 href - 不工作
- python - windows问题上的python cgal绑定
- swift - 如何修复 Swift 中的线程或处理错误?
- python - 'Polygon' 对象不可迭代 - iPython Cookbook
- c# - 安装 .NET SDK 5.0 后,我还应该安装 .NET Core 吗?
- excel - 验证用于更新字段“Mailmerge Fillin”的对话框
- c++ - 如何使用 Qt 的信号和插槽在 C++ 中的状态栏上获取实时变量更新?
- python-3.x - Python如何从类方法中的另一个模块调用方法
- c++ - 为什么字符串 s = (char*)tag.c_str(); 当标签是字符串时是错误的