如何 select 系列的第一个元素并将其重新分配给具有 python 的数据框列中的单元格

How to select first element of series and reassign it to cell in data frame column with python

我使用 .str.split(" ") 将数据框中一列中的每个单元格分成一系列三个元素。对于每一行,我想用每个系列的第一个元素替换每个单元格。

我试过使用:

df['number']=df['number'].str.split(" ")
df['number']=df['number'][0]

但这给出了错误:

ValueError: cannot reindex from a duplicate axis

一些示例代码:

import pandas as pd
data = {'Name':['1 Tim Tom', '2 Jack Jill', '3 Billy Bob', '4 Sally Sue'],'Letter': 
['A','B','C','D']}
df = pd.DataFrame(data)
df['Name']=df['Name'].str.split(" ")
print(df)

应该产生:

              Name Letter
0    [1, Tim, Tom]      A
1  [2, Jack, Jill]      B
2  [3, Billy, Bob]      C
3  [4, Sally, Sue]      D

我想要的结果是:

              Name Letter
0              [1]      A
1              [2]      B
2              [3]      C
3              [4]      D

另外,如果我想将列表的单元格 1、2 或 3 分配给数据框的新列,我该怎么办?像这样:

  Name  Name2 Name3 Letter
0  [1]    Tim   Tom      A
1  [2]   Jack  Jill      B
2  [3]  Billy   Bob      C
3  [4]  Sally   Sue      D

您可以通过在 .split() 中设置 expand = True 来完成此操作。这将为拆分的每个元素创建一个新列。然后您可以将这些新列分配给您原来的 df。

import pandas as pd
data = {'Name':['1 Tim Tom', '2 Jack Jill', '3 Billy Bob', '4 Sally Sue'],'Letter': 
['A','B','C','D']}
df = pd.DataFrame(data)
df[['Name','Name2','Name3']] = df['Name'].str.split(" ", expand=True)
print(df)

来源:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.split.html
https://youtu.be/vPKwm1XZjp8

对于第一个问题,您可以使用:

df['Name'] = df['Name'].str[0]