df = pd.DataFrame({"name": ["A001", "A002", "B001", "A001_K", "C002", "B001_K", "B001"],
"protein": [25, 28, 45, 22, 60, 40, 27],
"Qty": [85, 90, 75, 80, 30, 50, 30],
"rank": ["1st", "1st", "1st", "2nd", "1st", "1st", "2nd"]})
请问我先选列表name里面的第一个元素要怎么写,谢谢
您可以使用以下代码来选取列表name中的第一个元素:
df['name'][0]
这将返回name列表中的第一个元素"A001"。
在查看乘客姓名时,人们可能想知道如何处理它们以提取有用的信息。如果你仔细看看这些第一个例子:
你会注意到每个名字都有一个称谓!这可能是一个简单的小姐(Miss.)或太太(Mrs.),但它有时可能像 Master,Sir 那样更复杂。在这种情况下,可以对称谓进行大的分类。让我们看看我们将如何在下面的函数中执行此操作。
让我们先来看看在训练集中有什么不同的称谓。
# 正则测试
import re
test = 'Braund,the Countess. Owen Harris'
pattern =re.compile(",(.+)\.")
print(pattern.search(test).group(1))
the Countess
# 训练集
train_df['Title'] = train_df['Name'].map(lambda x:(re.compile(",(.+?)\.").search(x).group(1)).strip())
print(list(train_df['Title'].drop_duplicates()))
# 测试集
test_df['Title'] = test_df['Name'].map(lambda x:(re.compile(",(.+?)\.").search(x).group(1)).strip())
print(list(test_df['Title'].drop_duplicates()))
['Mr', 'Mrs', 'Miss', 'Master', 'Don', 'Rev', 'Dr', 'Mme', 'Ms', 'Major', 'Lady', 'Sir', 'Mlle', 'Col', 'Capt', 'the Countess', 'Jonkheer']
['Mr', 'Mrs', 'Miss', 'Master', 'Ms', 'Col', 'Rev', 'Dr', 'Dona']
于是我们把称谓信息提取出来,由于有些称谓的人数量过少,我们还需要做一个映射
Title_Dictionary = {
"Capt": "Officer",
"Col": "Officer",
"Major": "Officer",
"Jonkheer": "Royalty",
"Don": "Royalty",
"Sir" : "Royalty",
"Dr": "Officer",
"Rev": "Officer",
"the Countess":"Royalty",
"Mme": "Mrs",
"Mlle": "Miss",
"Ms": "Mrs",
"Mr" : "Mr",
"Mrs" : "Mrs",
"Miss" : "Miss",
"Master" : "Master",
"Lady" : "Royalty",
"Dona":"Royalty"
}
titanic['Title'] = titanic['Name'].map(lambda x:(re.compile(",(.+?)\.").search(x).group(1)).strip())
titanic['Title'] = titanic['Title'].map(Title_Dictionary)
# 查看缺失值
print(titanic['Title'].isnull().sum())
#titanic[titanic['Title'].isnull() == True]
0
Oliva y Ocana, Dona. Fermina。这在训练数据集中没有遇到这个称谓,测试集中的Dona是女士的尊称。
# 相同尊称的人数
titanic['Title'].value_counts()
Mr 757
Miss 262
Mrs 200
Master 61
Officer 23
Royalty 6
Name: Title, dtype: int64
创建 Title 特征,还能用来更好地估计缺失值的年龄。
可以使用soup.find_all()方法,传入name参数并选择列表中的第一个元素来实现选择列表name中的第一个元素为起点。具体步骤如下:
1.先用 beautifulsoup 库中的 BeautifulSoup() 方法解析列表 HTML 代码:
from bs4 import BeautifulSoup
html = '<ul><li>第一项</li><li>第二项</li><li>第三项</li></ul>'
soup = BeautifulSoup(html, "html.parser")
这里假设列表 HTML 代码为 <ul><li>第一项</li><li>第二项</li><li>第三项</li></ul>
。
2.然后使用 soup.find_all() 方法,传入 name 参数选择所有的 "li" 元素,并使用 Python 的 List 切片语法获取列表中的第一个元素:
lst = soup.find_all(name="li")
start = lst[0]
这里假设列表中的元素是 "li" 元素。
完整代码如下:
from bs4 import BeautifulSoup
html = '<ul><li>第一项</li><li>第二项</li><li>第三项</li></ul>'
soup = BeautifulSoup(html, "html.parser")
lst = soup.find_all(name="li")
start = lst[0]
这样,start 变量的值就是列表中的第一个元素,即 "第一项"。