如何从字符串中删除第一个 chracter 并将其存储到 Pandas 的新列中?



我有一个名为"学生名称"的列名,每行有四五个学生名字 - 就像约翰米尔斯,蒂姆哈利,亚历克斯赢,凯特结婚......我想将前两个学生姓名存储到一个名为"学生 1"和"学生 2"的新列中。名称已用逗号分隔。

我创建了一个函数,我可以提取第一个学生姓名。 结果存储到我的数据帧中,称为student_0

def find_student(df2): 
for i in range(2): 
df2[f"student name_{i}"] = [x.split(',')[i] for x in df2["student name"]] 
return df2 
new_df = find_student(df2)

DF2 是我的数据帧名称

我没有第二个学生的名字。请告知

如果需要名字和姓氏,请使用Series.str.split按位置选择前 2 列DataFrame.iloc

print (df2)
student name
0   John mills, Tim Harry, Alex win, Kate marry
1  Brando XI, James Caan, Richard S. Castellano
2   Heath Ledger, Aaron Eckhart, Michael Caine 
N = 2
df3 = df2["student name"].str.split(', ', expand=True).iloc[:, :N]
#rename columns names
df3.columns = [f"student name_{i+1}" for i in range(len(df3.columns))]
print (df3)
student name_1 student name_2
0     John mills      Tim Harry
1      Brando XI     James Caan
2   Heath Ledger  Aaron Eckhart

或者使用列表理解:

N = 2
L = [x.split(',')[:2] for x in df2["student name"]]
df3 = pd.DataFrame(L, columns=[f"student name_{i+1}" for i in range(N)])
print (df3)
student name_1  student name_2
0     John mills       Tim Harry
1      Brando XI      James Caan
2   Heath Ledger   Aaron Eckhart

如果只需要名称:

N = 2
L = [[y.split()[0] for y in x.split(',')[:2]] for x in df2["student name"]]
df3 = pd.DataFrame(L, columns=[f"student name_{i+1}" for i in range(N)])
print (df3)
student name_1 student name_2
0           John            Tim
1         Brando          James
2          Heath          Aaron

#join to original if necessary
df2 = df2.join(df3)

试试这个

def find_student(df2): 
for i in range(2): 
df2[f"student name_{i}"] = pd.Series(map(lambda x: x.split(',')[i], df2["student name"]))
return df2

使用 pandas 功能(str 和 split),你不需要写函数。

df = [["John mills, Tim Harry, Alex win, Kate marry"],
["Brando XI, James Caan, Richard S. Castellano"],
["Heath Ledger,Aaron Eckhart, Michael Caine"]]
df2 = pd.DataFrame(df)
df2.columns = ['Student_Name']
df2['student name_1'] = df2.Student_Name.str.split(",").str[0]
df2['student name_2'] = df2.Student_Name.str.split(",").str[1]

最新更新