使用 pandas 进行计算

Calculations using pandas

我正在尝试学习如何使用 python,但我以前从未使用过 pandas。我想使用 excel 数据创建一个简单的计算 - 这是 excel 数据的示例:

Example Data

有 3 列,唯一 ID、车辆和时间。

我知道如何在 python 上制作一个简单的计算器,我必须在其中手动输入这些值,但是是否可以直接从列中提取数据以进行计算?

理想情况下,它会先获取 ID 本身,然后是带薪的车辆类型(代码中定义的薪水,例如 Bike = 15.00),乘以小时数得出总薪水?

编号:28392

交通工具:自行车

小时数:40

总计:600 美元

希望这是有道理的,提前致谢!

首先,您需要将数据集加载到 pandas 数据框中,您可以使用以下命令执行此操作。

import pandas as pd 
df = pd.read_excel('name_of_file_here.xlsx',sheet_name='Sheet_name_here')

所以您的 excel 数据现在是一个名为 df 的 pandas 数据框。

如果所有车辆的支付率都相同,您可以执行以下操作。

rate = 15
df['Pay'] = df['Hours']*rate

这会在您的数据框中创建一个名为 'Pay' 的新列,并将 15 的比率乘以小时列中的每一行。

但是,如果不同车辆类型的费率不同,您可以执行以下操作。

bike_rate = 15
df[df['Vehicle']=='Bike'] = df[df['Vehicle']=='Bike']*bike_rate
cargo_bike_rate = 20
df[df['Vehicle']=='Cargo-Bike'] = df[df['Vehicle']=='Cargo-Bike']*cargo_bike_rate 

这将 select 数据框中的行,其中 vehicle 等于您想要的任何类型并对这些行进行操作。

我认为另一种方法也是最好的方法是使用函数。

def calculate_pay(vehicle,hours):
if vehicle == 'Bike':
    rate = 15
elif vehicle == 'Cargo-Bike':
    rate = 20
#And so on ....
else:
    rate = 10
return hours*rate

然后您可以将此函数应用于您的数据框。

df['Pay'] = df.apply(lambda x: calculate_pay(x['Vehicle'],x['Hours']),axis=1)

这会在您的数据框中创建一个名为 'Pay' 的新列,并应用一个名为 calculate_pay 的函数,该函数从数据框中获取输入车辆和小时数以及 returns 工资。

要在屏幕上打印结果,如果您使用的是 jupyter notebook,只需键入 df 并输入,或者 select 您在评论中提到的特定列,您可以执行以下操作。

df[['Id','Vehicle','Hours','Pay']]

要保存回 excel,您可以执行以下操作

df.to_excel('output.xslx')