Pandas DataFrame.eval(~)
方法评估 DataFrame 列上的操作,该操作被编码为字符串。该方法不支持对特定行和值进行操作。
警告
如果您对其他人提供给您的字符串调用eval(~)
,则可能会运行恶意代码。
这并不意味着使用 eval(~)
是不好的做法 - 事实上,众所周知,eval(~)
的性能优于其他 Pandas 方法,因此鼓励使用它。只需确保对其他人提供的字符串进行验证即可。
参数
1.expr
| string
| optional
要评估的表达式。
2. inplace
| boolean
| optional
-
如果是
True
,则直接修改源DataFrame。 -
如果
False
,则将返回新的DataFrame,并且源DataFrame将保持不变。
默认情况下,inplace=False
。
返回值
评估的结果 - 类型可能因结果而异。如果是 inplace=True
,则不会返回任何内容,因为源 DataFrame 被直接修改。
例子
考虑以下 DataFrame :
df = pd.DataFrame({"A":[3,4],"B":[5,6],"C":[7,8]})
df
A B C
0 3 5 7
1 4 6 8
基本用法
计算每行的总和:
df.eval("A + B + C")
0 15
1 18
dtype: int64
这里的返回类型是 Series
。请注意我们如何使用标签直接引用列,这很方便,因为我们通常必须引用像 df["A"]
这样的列。
添加新列
要添加新列:
df.eval("D = A + B + C")
A B C D
0 3 5 7 15
1 4 6 8 18
由于inplace
参数默认设置为False
,因此源DataFrame 保持不变。要直接修改源 DataFrame 而无需创建新的 DataFrame,请设置 inplace=True
:
df.eval("D = A + B + C", inplace=True)
df
A B C D
0 3 5 7 15
1 4 6 8 18
我们在这里再次展示df
供您参考:
df
A B C
0 3 5 7
1 4 6 8
添加多列
要一次添加多列:
df.eval(
"""
D = A + B
E = A + D
"""
)
A B C D E
0 3 5 7 8 11
1 4 6 8 10 14
请注意,我们如何使用最初不在 df
中的列 D
来创建列 E
。
使用局部变量
我们还可以使用 @
语法访问 eval(~)
外部定义的局部变量:
s = pd.Series([100,200])
df.eval("A + B + C + @s")
0 115
1 218
dtype: int64
相关用法
- Python Pandas DataFrame empty属性用法及代码示例
- Python Pandas DataFrame equals方法用法及代码示例
- Python PySpark DataFrame exceptAll方法用法及代码示例
- Python Pandas DataFrame eq方法用法及代码示例
- Python Pandas DataFrame explode方法用法及代码示例
- Python Pandas DataFrame expanding方法用法及代码示例
- Python Pandas DataFrame pop方法用法及代码示例
- Python Pandas DataFrame nsmallest方法用法及代码示例
- Python Pandas DataFrame sample方法用法及代码示例
- Python Pandas DataFrame items方法用法及代码示例
- Python Pandas DataFrame max方法用法及代码示例
- Python Pandas DataFrame swaplevel方法用法及代码示例
- Python Pandas DataFrame agg方法用法及代码示例
- Python Pandas DataFrame copy方法用法及代码示例
- Python Pandas DataFrame pow方法用法及代码示例
- Python Pandas DataFrame insert方法用法及代码示例
- Python Pandas DataFrame lt方法用法及代码示例
- Python Pandas DataFrame all方法用法及代码示例
- Python Pandas DataFrame unstack方法用法及代码示例
- Python Pandas DataFrame mean方法用法及代码示例
- Python PySpark DataFrame filter方法用法及代码示例
- Python Pandas DataFrame tz_convert方法用法及代码示例
- Python Pandas DataFrame isin方法用法及代码示例
- Python PySpark DataFrame collect方法用法及代码示例
- Python PySpark DataFrame intersect方法用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | eval method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。