如何使用 pandas 将字符串转换为整数
How to transfer strings into integers with pandas
我正在尝试将 plans_data
:
中的字符串转换为整数
import pandas as pd
from bs4 import BeautifulSoup
import requests
plans_data = pd.DataFrame(columns = ['Country', 'Currency', 'Mobile', 'Basic', 'Standard', 'Premium'])
for index, row in countries_list.iterrows():
country = row['ID']
url = f'https://help.netflix.com/en/node/24926/{country}'
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")
results = soup.find("table", class_="c-table")
try:
plan_country = pd.read_html(results.prettify())[0] #creates a list(!) of dataframe objects
plan_country = plan_country.rename(columns = {'Unnamed: 0':'Currency'})
plan_country = pd.DataFrame(plan_country.iloc[0,:]).transpose()
plans_data = pd.concat([plans_data, plan_country], ignore_index=True)
except AttributeError:
country_name = row['Name']
print(f'No data found for {country_name}.')
plans_data.loc[index, 'Country'] = row['Name']
plans_data
首先,我尝试使用函数 float
:
进行传输
# 1. Here we import pandas
import pandas as pd
# 2. Here we import numpy
import numpy as np
ans_2_1_ = float(plans_data['Basic', 'Standard', 'Premium'])
但是,我总是得到 NameError:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_15368/3072127414.py in <module>
3 # 2. Here we import numpy
4 import numpy as np
----> 5 ans_2_1_ = float(plans_data['Basic', 'Standard', 'Premium'])
NameError: name 'plans_data' is not defined
我该如何解决这个问题?
如果我的代码不适合我的任务“将字符串转换为整数”,你能告诉我如何转换吗?
错误表明第二段代码不知道plans_data
是什么,所以首先确保它们plans_data
是在你定义的地方定义的,即在同一个文件或同一个文件中Jupyter 笔记本
第二个问题是 plans_data['Basic', 'Standard', 'Premium']
是无效语法
第三,也可能是您真正的问题,如何将这些列中的值转换为浮点数。
列 'Basic'、'Standard'、'Premium' 中的元素是货币格式的字符串,例如 '£ 5.99'
。您可以将它们转换为浮点数(您需要为每一列执行此操作):
ans_2_1_ = plans_data['Basic'].str[1:].astype(float)
... # same for Standard and Premium
我正在尝试将 plans_data
:
import pandas as pd
from bs4 import BeautifulSoup
import requests
plans_data = pd.DataFrame(columns = ['Country', 'Currency', 'Mobile', 'Basic', 'Standard', 'Premium'])
for index, row in countries_list.iterrows():
country = row['ID']
url = f'https://help.netflix.com/en/node/24926/{country}'
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")
results = soup.find("table", class_="c-table")
try:
plan_country = pd.read_html(results.prettify())[0] #creates a list(!) of dataframe objects
plan_country = plan_country.rename(columns = {'Unnamed: 0':'Currency'})
plan_country = pd.DataFrame(plan_country.iloc[0,:]).transpose()
plans_data = pd.concat([plans_data, plan_country], ignore_index=True)
except AttributeError:
country_name = row['Name']
print(f'No data found for {country_name}.')
plans_data.loc[index, 'Country'] = row['Name']
plans_data
首先,我尝试使用函数 float
:
# 1. Here we import pandas
import pandas as pd
# 2. Here we import numpy
import numpy as np
ans_2_1_ = float(plans_data['Basic', 'Standard', 'Premium'])
但是,我总是得到 NameError:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_15368/3072127414.py in <module>
3 # 2. Here we import numpy
4 import numpy as np
----> 5 ans_2_1_ = float(plans_data['Basic', 'Standard', 'Premium'])
NameError: name 'plans_data' is not defined
我该如何解决这个问题?
如果我的代码不适合我的任务“将字符串转换为整数”,你能告诉我如何转换吗?
错误表明第二段代码不知道plans_data
是什么,所以首先确保它们plans_data
是在你定义的地方定义的,即在同一个文件或同一个文件中Jupyter 笔记本
第二个问题是 plans_data['Basic', 'Standard', 'Premium']
是无效语法
第三,也可能是您真正的问题,如何将这些列中的值转换为浮点数。
列 'Basic'、'Standard'、'Premium' 中的元素是货币格式的字符串,例如 '£ 5.99'
。您可以将它们转换为浮点数(您需要为每一列执行此操作):
ans_2_1_ = plans_data['Basic'].str[1:].astype(float)
... # same for Standard and Premium