python - 将 pd.Dataframe 的特定单元格乘以 python 列表
问题描述
想象一下我们有数据框,让我们尝试像这样过滤它:
df[df[0] == 'Test_value'].iloc[:, 1:5]
这样我们就按Test_value
列中的值进行了过滤0
,我们只取 1 到 5 列。现在我想从数据框中更改这些值。我想将它们乘以 [1,3,1,2] 之类的列表。
最后,我希望我的初始数据框仅在这些特定单元格中进行更改。
ps:df.mul()
func 做得很好,但它只返回我更改的单元格(df[df[0] == 'Test_value].iloc[:, 1:5])
,但我无法将它们设置为我的初始数据框:df[df[0] == 'Test_value].iloc[:, 1:5] = df[df[0] == 'Test_value].iloc[:, 1:5].mul(list)
不工作((
解决方案
问题在于链索引,可能的解决方案是DataFrame.iloc
仅通过将布尔掩码转换为 numpy 数组来过滤Series.to_numpy
:
df = pd.DataFrame({
0:['Test_value'] *6,
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':[5,3,6,9,2,4],
})
dont use variable list because builtins
L = [1,3,1,2]
#pandas 0.24+
df.iloc[(df[0] == 'Test_value').to_numpy(), 1:5] *= L
#pandas below
#df.iloc[(df[0] == 'Test_value').values, 1:5] *= L
print (df)
0 B C D E F
0 Test_value 4 21 1 10 5
1 Test_value 5 24 3 6 3
2 Test_value 4 27 5 12 6
3 Test_value 5 12 7 18 9
4 Test_value 5 6 1 4 2
5 Test_value 4 9 0 8 4
推荐阅读
- java - GraphQl usług 网关模式
- python - 如何删除行中的重复字符?
- node.js - 根据日期获取唯一的预订编号
- c# - 如何在从 Sql 查询填充的 DataGridView 中放置一个组合框?
- vb.net - Discord 2.0 清除消息 (vb.net)
- asp.net-mvc - 如何避免在asp.net mvc中刷新页面
- c# - 运行迁移时,ASP.NET Core 2.1 模型不断尝试在数据库中创建 ApplicationUsers 表
- laravel - Laravel 错误屏幕,什么文件引发错误以及要修复什么文件?
- spotfire - 如何按月计算条目?如果满足条件,可以在多个月内计算同一行/条目
- rabbitmq - WSL:错误/MainProcess] 消费者:无法连接到 amqp://guest:**@127.0.0.1:5672//:套接字已关闭