我有两个数据帧,df_purchase(1)和df_login(2)
+--------+-----+--------+------------+--------------------+-------------+--------------------------+
| | age | gender | ttp | count | sum(amount) | region |
+--------+-----+--------+------------+--------------------+-------------+--------------------------+
| 49427 | 63 | M | 824.731412 | 2 | 25.00 | Omaha, Nebraska |
| 28433 | 49 | M | 1.166250 | 2 | 41.94 | Catasauqua, Pennsylvania |
| 4162 | 29 | M | 5.620949 | 2 | 51.78 | Eagle Center, Iowa |
| 18747 | 43 | M | 153.502072 | 2 | 23.84 | Pacific, …Run Code Online (Sandbox Code Playgroud) 我有一个数据集,其中包含按年份划分的国家和经济指标统计数据,如下所示:
Country Metric 2011 2012 2013 2014
USA GDP 7 4 0 2
USA Pop. 2 3 0 3
GB GDP 8 7 0 7
GB Pop. 2 6 0 0
FR GDP 5 0 0 1
FR Pop. 1 1 0 5
Run Code Online (Sandbox Code Playgroud)
如何在熊猫中使用MultiIndex创建一个数据框,每个国家只显示年度GDP?
我试过了:
df = data.groupby(['Country', 'Metric'])
Run Code Online (Sandbox Code Playgroud)
但它没有正常工作.
我正在解析一个JS生成的网页,如下所示:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get('https://www.consumerbarometer.com/en/graph-builder/?question=M1&filter=country:singapore,canada,mexico,brazil,argentina,united_states,bulgaria,austria,belgium,croatia,czech_republic,denmark,estonia,finland,france,germany,greece,hungary,italy,ireland,latvia,lithuania,norway,netherlands,poland,portugal,russia,romania,serbia,slovakia,spain,slovenia,sweden,switzerland,ukraine,united_kingdom,australia,china,israel,hong_kong_sar,japan,korea,new_zealand,malaysia,taiwan,turkey,vietnam')
// wait for svg to appear
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.TAG_NAME, 'svg')))
for text in driver.find_elements_by_class_name('bar-text-label'):
print(text.text)
driver.close()
Run Code Online (Sandbox Code Playgroud)
除了text从类中获取之外,bar-text-label我还想从HTML5数据属性中获取值.例如,<rect rx="3" ry="3" width="76%" height="40" transform="translate(0,40)" data-value="76" class="bar"></rect>我希望能够解析76这个问题.
这可能在Selenium吗?
我尝试了下面的两个,没有成功:
for text in driver.find_elements_by_class_name('bar'):
print(data_value.text)
for data in driver.find_elements_by_xpath('//*[contains(@data-value)]/@data-value'):
print(data.text)
Run Code Online (Sandbox Code Playgroud) 我正在使用 xlsxwriter 模块格式化 Excel 文件中的所有列:
def to_excel(video_report, feed):
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('daily_report.xlsx', engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object.
video_report.to_excel(writer, sheet_name='Video Overview', na_rep="-")
# Get the xlsxwriter objects from the dataframe writer object.
workbook = writer.book
worksheet = writer.sheets['Video Overview']
# Add some cell formats.
integer = workbook.add_format({'num_format': '0', 'align': 'center'})
decimal = workbook.add_format({'num_format': '0.00', 'align': 'center'})
percentage = workbook.add_format({'num_format': '0.0%', 'align': 'center'})
zebra = workbook.add_format({'bold': True}) …Run Code Online (Sandbox Code Playgroud) 我想写一个错误处理,因为用户会在我的脚本中输入错误的密码.我继续在except语句之后更改代码,但我无法找出错误的正确代码是什么.我错过了什么吗?
import imaplib
import email
mail = imaplib.IMAP4_SSL('imap.gmail.com')
username = raw_input('USERNAME (email):')
password = raw_input('PASSWORD: ')
try:
mail.login(username, password)
print "Logged in as %r !" % username
except:
imaplib.error
print "Log in failed."
mail.list()
# Out: list of "folders" aka labels in gmail.
mail.select("inbox") # connect to inbox.
fromWho = raw_input('FROM:')
result, data = mail.uid('search', None, '(FROM fromWho)')
latest_email_uid = data[0].split()[-1]
result, data = mail.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = data[0][1]
print raw_email
Run Code Online (Sandbox Code Playgroud) 我注意到如果要输入df.column_name(),我可以column_name在IPython Notebook中的选项卡中自动完成。
现在,对列执行操作的正确语法是df['column_name'],在该处我无法自动完成(我假设是因为它是字符串?)。还有其他符号或方法可以简单地键入列名。我是essentailly,正在寻找一种解决方案,该解决方案可以让我在其中自动完成列名的制表符df['column_name']。
在下面的代码中,我将数字格式应用于Excel工作表中的每一列。但是,我似乎无法弄清楚将多种格式应用于特定的列,居中或编号最终被覆盖。甚至可以对一列应用两种格式吗?
def to_excel(video_report):
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object.
video_report.to_excel(writer, sheet_name='Sheet1', na_rep="-")
# Get the xlsxwriter objects from the dataframe writer object.
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Add some cell formats.
integer = workbook.add_format({'num_format': '0'})
decimal = workbook.add_format({'num_format': '0.00'})
percentage = workbook.add_format({'num_format': '0.0%'})
center = workbook.add_format({'align': 'center'})
# APPLY CENTERING
worksheet.set_column('B:L', None, center)
# APPLY NUMBER FORMATTING
worksheet.set_column('B:B', 13, integer …Run Code Online (Sandbox Code Playgroud) 我有一个熊猫系列(作为更大的数据框的一部分),如下所示:
0 7416
1 10630
2 7086
3 2091
4 3995
5 1304
6 519
7 1262
8 3676
9 2371
10 5346
11 912
12 3653
13 1093
14 2986
15 2951
16 11859
Run Code Online (Sandbox Code Playgroud)
我想根据以下分位数对行进行分组:
Top 0-5%
Top 6-10%
Top 11-25%
Top 26-50%
Top 51-75%
Top 76-100%
Run Code Online (Sandbox Code Playgroud)
首先,我开始使用pd.rank()数据,然后我计划然后使用pd.cut()将数据切割成容器,但它似乎不接受顶部N%,而是接受显式bin边缘.有没有一种简单的方法在pandas中执行此操作,或者我是否需要创建一个lambda/apply函数来计算每个排序项应放在哪个bin中.
我有一大堆JSON数据格式如下:
[
[{
"created_at": "2017-04-28T16:52:36Z",
"as_of": "2017-04-28T17:00:05Z",
"trends": [{
"url": "http://twitter.com/search?q=%23ChavezSigueCandanga",
"query": "%23ChavezSigueCandanga",
"tweet_volume": 44587,
"name": "#ChavezSigueCandanga",
"promoted_content": null
}, {
"url": "http://twitter.com/search?q=%2327Abr",
"query": "%2327Abr",
"tweet_volume": 79781,
"name": "#27Abr",
"promoted_content": null
}],
"locations": [{
"woeid": 395277,
"name": "Turmero"
}]
}],
[{
"created_at": "2017-04-28T16:57:35Z",
"as_of": "2017-04-28T17:00:03Z",
"trends": [{
"url": "http://twitter.com/search?q=%23fyrefestival",
"query": "%23fyrefestival",
"tweet_volume": 141385,
"name": "#fyrefestival",
"promoted_content": null
}, {
"url": "http://twitter.com/search?q=%23HotDocs17",
"query": "%23HotDocs17",
"tweet_volume": null,
"name": "#HotDocs17",
"promoted_content": null
}],
"locations": [{
"woeid": 9807,
"name": "Vancouver"
}]
}]
]...
Run Code Online (Sandbox Code Playgroud)
我编写了一个函数,将其格式化为采用以下形式的pandas数据框: …
我的模板是这样的:
{% for order in orders %}
<li><h2>{{ order}}</h2>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我的路由功能是这样的:
@app.route('/order_history')
def orderhistory():
db = get_db()
cur = db.execute('select * from order_items')
orders = cur.fetchall()
return render_template('order_history.html', orders = orders)
Run Code Online (Sandbox Code Playgroud)
知道为什么我要获取行对象位置而不是数据库内容吗?