Pandas 如何添加计算列

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函数。这些方法提供了多种方式来根据现有列计算新列,可根据特定需求选择最合适的方法来完成任务。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程