当使用Pandas更新特定子集行的列值时,最好的方法是什么?
简单示例:
import pandas as pd
df = pd.DataFrame({'name' : pd.Series(['Alex', 'John', 'Christopher', 'Dwayne']),
'value' : pd.Series([1., 2., 3., 4.])})
目标:根据名称的长度和值列本身的初始值更新value
列。
以下行代码实现了此目标:
df.value[df.name.str.len() == 4 ] = df.value[df.name.str.len() == 4] * 1000
然而,这条线路会在左右两侧过滤整个数据表格两次。我认为这不是最有效的方式。并且它没有'原地'执行。
基本上,我正在寻找与R data.table ':='运算符相对应的pandas等效方法:
df[nchar(name) == 4, value := value*1000]
而对于其他类型的操作,比如:
df[nchar(name) == 4, value := paste0("short_", as.character(value))]
环境: Python 3.6
Pandas 0.22
提前致谢。
loc
或使用update
。 - jezrael