我使用pandas并且我有数据,数据看起来像这样
FirstName LastName StudentID
FirstName2 LastName2 StudentID2
然后我使用 str.split()
函数基于空格将其拆分。
因此,在 DataFrame 中,数据看起来像这样:
[[FirstName, LastName, StudentID],
[FirstName2, LastName2, StudentID2]]
如何仅获取每个学生的学生ID,并将其保存在新列中?
我使用pandas并且我有数据,数据看起来像这样
FirstName LastName StudentID
FirstName2 LastName2 StudentID2
然后我使用 str.split()
函数基于空格将其拆分。
因此,在 DataFrame 中,数据看起来像这样:
[[FirstName, LastName, StudentID],
[FirstName2, LastName2, StudentID2]]
如何仅获取每个学生的学生ID,并将其保存在新列中?
尝试以下解决方案:
item["x"]["y"].split(' ')[-1]
ids = [val[-1] for val in your_string.split()]
我认为我可以添加一个简单的解决方案,它不使用列表或列表推导式来分割现有的列/系列,并将分割的最后一项存储到数据框中的新列/系列中。
import pandas as pd
data = ['FirstName LastName StudentID',
'FirstName2 LastName2 StudentID2']
df = pd.DataFrame(data=data, columns=['text'])
df['id'] = df.text.str.split(" ").str.get(-1)
输出:
索引 文本 ID
0 名字 姓氏 学生ID 学生ID
0 名字2 姓氏2 学生ID2 学生ID2
import pandas as pd
data = ['FirstName LastName StudentID',
'FirstName2 LastName2 StudentID2']
df = pd.DataFrame(data=data, columns=['text'])
df['id'] = df.text.apply(lambda x: x.split()[-1])
print(df)
输出
text id
0 FirstName LastName StudentID StudentID
1 FirstName2 LastName2 StudentID2 StudentID2
df['id'] = [x.split()[-1] for x in df.text]
print(df)
输出
text id
0 FirstName LastName StudentID StudentID
1 FirstName2 LastName2 StudentID2 StudentID2
pd.DataFrame(df.text.str.split(' ').tolist()).iloc[:,0]
Out[15]:
0 FirstName
1 FirstName2
Name: 0, dtype: object
students = [
["FirstName", "LastName", "StudentID"],
["FirstName2", "LastName2", "StudentID2"]
]
print([student[2] for student in students])
这将会打印出来
['StudentID', 'StudentID2']
ids=[val[1] for val in your_string.rsplit(maxsplit=1)]
,这可能会更快。 :) - xkcdjerry