如何在Pandas中获取多个值

时间:2018-05-31 04:04:02

标签: python pandas

我想将一组文件名拆分为名称和文件类型。

但是,我收到如下错误。

这样做的正确方法是什么?

感谢。

数据框是:

             full_name
0            ocean.jpg
1            mountain.png
2            forest.gif
3            river.mp4
4            animal.avi
5            girl.pdf

df[['name', 'type']] = df['full_name'].str.split('.')
KeyError: "['name' 'type'] not in index"

2 个答案:

答案 0 :(得分:2)

<强> 选项1
split tolist ,如果您只想要结果

pd.DataFrame(df.full_name.str.split('.').tolist(), columns = ['name', 'type'])

       name type
0     ocean  jpg
1  mountain  png
2    forest  gif
3     river  mp4
4    animal  avi
5      girl  pdf

选项2 (你非常接近这一个)
split expand=True ,如果您想要修改原始数据框

df[['name', 'type']] = df['full_name'].str.split('.', expand=True)

      full_name      name type
0     ocean.jpg     ocean  jpg
1  mountain.png  mountain  png
2    forest.gif    forest  gif
3     river.mp4     river  mp4
4    animal.avi    animal  avi
5      girl.pdf      girl  pdf

答案 1 :(得分:1)

或者,您可以将extract与命名组一起使用。

In [232]: df.full_name.str.extract('(?P<name>\w+).(?P<type>\w+)', expand=True)
Out[232]:
       name type
0     ocean  jpg
1  mountain  png
2    forest  gif
3     river  mp4
4    animal  avi
5      girl  pdf

In [233]: df.join(df.full_name.str.extract('(?P<name>\w+).(?P<type>\w+)', expand=True))
Out[233]:
      full_name      name type
0     ocean.jpg     ocean  jpg
1  mountain.png  mountain  png
2    forest.gif    forest  gif
3     river.mp4     river  mp4
4    animal.avi    animal  avi
5      girl.pdf      girl  pdf