看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)有一个 pandas DataFrame,包含以下数据:
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [5, 4, 3, 2, 1]
})
请使用 pandas 的 eval()
方法完成以下任务:
C - A > 1
的行,并返回这些行的 DataFrame。要求:
pd.eval()
或 df.eval()
方法完成。import pandas as pd
# 创建 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [5, 4, 3, 2, 1]
})
# 任务 1:添加列 'D',值为 A + B
df = df.eval('D = A + B')
# 任务 2:添加列 'E',值为 B / C
df = df.eval('E = B / C')
# 任务 3:筛选 C - A > 1 的行
result = df[df.eval('C - A > 1')]
# 打印结果
print("原始 DataFrame:")
print(df)
print("\n筛选后的 DataFrame(C - A > 1):")
print(result)
输出结果:
原始 DataFrame:
A B C D E
0 1 10 5 11 2.000000
1 2 20 4 22 5.000000
2 3 30 3 33 10.000000
3 4 40 2 44 20.000000
4 5 50 1 55 50.000000
筛选后的 DataFrame(C - A > 1):
A B C
0 1 10 5
1 2 20 4
任务 1:添加列 'D'
使用 df.eval('D = A + B')
在 DataFrame 中创建新列 'D',其值为列 'A' 和 'B' 的元素级加法运算结果。eval()
方法能够解析字符串表达式并直接对 DataFrame 的列进行操作。
任务 2:添加列 'E'
使用 df.eval('E = B / C')
创建新列 'E',其值为列 'B' 除以列 'C' 的元素级运算结果。eval()
支持基本的数学运算符,如加、减、乘、除等。
任务 3:筛选行
使用 df.eval('A + C > 6')
计算条件 A + C > 6
,返回一个布尔 Series,用于索引 DataFrame,筛选出满足条件的行。eval()
在这里用于高效计算布尔表达式。
eval()
方法的优点是性能较高,尤其是对于大型 DataFrame,因为它利用了 numexpr
库进行优化。(完)
更新时间:2025-08-18 10:25:04 标签:pandas python eval