如何使用Numpy矢量化计算Pandas中的列

2024-04-26 01:39:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pd数据帧,希望根据同一数据帧中的两个其他列计算一个列。我想使用Numpy矢量化,因为数据集很大。 以下是数据帧:

Input Dataframe
   A    B
0  567  345
1  123  456
2  568  354

Output Dataframe
   A    B    C
0  567  345  567.345
1  123  456  123.456
2  568  354  568.354

其中,C列是a和B之间的串联,两个值之间有点。 我正在使用apply():

df['C'] = df.apply(lambda row: str(row['A']) + '.' + str(row['B']), axis=1)

而是迭代行/索引等,但仍然很慢。 我知道我可以做到:

df['C'] = df['A'].values + df['B'].values

速度非常快,但这不会给我想要的结果,同时:

df['C'] = str(df['A'].values) + '.' + str(df['B'].values)

会给我一些完全不同的东西。 该示例仅用于演示目的(A和B的值可以是任何类型)。这个问题更一般。 提前谢谢你


2条回答

要将数字转换为字符串,可以使用方法astype()

df['A'].astype('str') + '.' + df['B'].astype('str')

列表理解应比应用或此类用例更快:

df['C'] = [f"{a}.{b}" for a,b in zip(df['A'],df['B'])]

输出

    A    B        C
0  567  345  567.345
1  123  456  123.456
2  568  354  568.354

相关问题 更多 >

    热门问题