访问Pandas DataFram元素中的列表

2024-05-29 06:00:02 发布

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

我有一个PandasDataFrame,其中一列中有一个整数列表。我想访问这个列表中的各个元素。我已经找到了一种方法,使用tolist()并将其转换回DataFrame,但是我想知道是否有一种更简单/更好的方法。在本例中,我将列A添加到列B中列表的中间元素。

import pandas as pd
df = pd.DataFrame({'A' : (1,2,3), 'B': ([0,1,2],[3,4,5,],[6,7,8])})
df['C'] = df['A'] + pd.DataFrame(df['B'].tolist())[1]
df

有更好的办法吗?


Tags: 方法import元素dataframepandasdf列表as
3条回答

一种选择是使用apply,这应该比用它创建数据帧快:

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

一些速度测试:

%timeit df['C'] = df['A'] + pd.DataFrame(df['B'].tolist())[1]
# 1000 loops, best of 3: 567 µs per loop
%timeit df['C'] = df['A'] + df.apply(lambda row: row['B'][1], axis = 1) 
# 1000 loops, best of 3: 406 µs per loop
%timeit df['C'] = df['A'] + df['B'].apply(lambda x:x[1])
# 1000 loops, best of 3: 250 µs per loop

好的。稍微好一点。@布鲁克特的回答是最快的。

您也可以简单地尝试以下操作:

df['C'] = df['A'] + df['B'].str[1]

此方法的性能:

%timeit df['C'] = df['A'] + df['B'].str[1]
#1000 loops, best of 3: 445 µs per loop

更直截了当的是:

df['C'] = df['A'] + df['B'].apply(lambda x:x[1])

相关问题 更多 >

    热门问题