如何 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]
我使用 .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]