Pandas:索引列表的数据框列中每个列表的第一个元素

Pandas: Index the first element of each list in a dataframe column of lists

我有一系列列表,想使用 pandas 为列表数据框中每个列表的第一个元素编制索引。我该怎么做?

工作示例

我的原始数据集是一个 pandas 数据框,看起来像:


# Import raw dataset from URL
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data'
column_names = ['MPG', 'Cylinders', 'Displacement', 'Horsepower', 
                'Weight', 'Acceleration', 'Model Year', 'Origin', 'Carname']
train = pd.read_csv(url, names=column_names,
                          na_values='?',sep='\s+'
                          , skipinitialspace=True)

temp1 = pd.DataFrame(train["Carname"].str.split())
print(temp1)

                            Carname
0                 [plymouth, champ]
1                    [amc, matador]
2     [chevroelt, chevelle, malibu]
...                             ...
1489         [vw, dasher, (diesel)]
1490                [honda, accord]
1491             [ford, escort, 4w]

所需的结果类似于,

    'plymouth'
    'amc'
    'chevroelt'
    .....

您可以将一个函数应用于选择每个系列项目的第一个元素的系列,从而产生一个新系列:

s_first_elements = s.apply(lambda x: x[0])

可以使用字符串访问器.str[],如下:

temp1['Carname'].str[0]         # str[0] for first element in list

结果:

0      chevrolet
1          buick
2       plymouth
3            amc
4           ford
         ...    
393         ford
394           vw
395        dodge
396         ford
397        chevy
Name: Carname, Length: 398, dtype: object