Pandas 如何添加计算列
在本文中,我们将介绍如何在Pandas中向数据帧中添加计算列。计算列是用于存储根据数据帧现有列计算出的新列的列。
阅读更多:Pandas 教程
使用Eval函数添加计算列
Pandas中的eval()函数可用于根据现有列计算新列。下面是一个示例,其中我们将使用eval函数计算新列的平均值。
import pandas as pd
# 创建数据帧
df = pd.DataFrame({
'a': [1, 2, 3, 4],
'b': [2, 4, 6, 8]
})
# 使用eval函数添加计算列
df.eval('c = (a + b) / 2', inplace=True)
print(df)
输出:
a b c
0 1 2 1.5
1 2 4 3.0
2 3 6 4.5
3 4 8 6.0
eval函数使用字符串表示法,其中列名用[]括起来,运算符和函数符合Python的语法。可以使用任何有效的Python代码作为eval参数。
使用apply函数添加计算列
apply()函数可用于使用自定义函数计算新列。下面是一个示例,其中我们将使用apply函数计算新列的差异。
import pandas as pd
# 创建数据帧
df = pd.DataFrame({
'a': [1, 2, 3, 4],
'b': [2, 4, 6, 8]
})
# 定义差异的自定义函数
def diff(row):
return row['b'] - row['a']
# 使用apply函数添加计算列
df['c'] = df.apply(diff, axis=1)
print(df)
输出:
a b c
0 1 2 1
1 2 4 2
2 3 6 3
3 4 8 4
使用axis参数指定沿着列的方向应用函数。
使用assign函数添加计算列
assign()函数可用于添加一个或多个新列到数据帧。下面是一个示例,其中我们将使用assign函数计算两个新列的英里和千米。
import pandas as pd
# 创建数据帧
df = pd.DataFrame({
'distance': [100, 200, 300, 400],
'unit': ['mile', 'mile', 'kilometer', 'kilometer']
})
# 使用assign函数添加计算列
df = df.assign(
miles=lambda x: x['distance'] * (x['unit'] == 'mile'),
kilometers=lambda x: x['distance'] / 0.62137119223733 * (x['unit'] == 'kilometer')
)
print(df)
输出:
distance unit miles kilometers
0 100 mile 100.0 0.0
1 200 mile 200.0 0.0
2 300 kilometer 0.0 482.8
3 400 kilometer 0.0 643.7
使用assign函数将新列分配给数据帧的副本。
总结
本文介绍了三种向Pandas数据帧添加计算列的方法:使用eval函数,使用apply函数和使用assign函数。这些方法提供了多种方式来根据现有列计算新列,可根据特定需求选择最合适的方法来完成任务。
极客教程