我正在尝试旋转图中的x刻度标签。我创建了一个通用函数,以要绘制的样式进行绘制。我执行以下操作:
labels=ax2.get_xticklabels()
for i,label in labels:
labels[i]=label.get_text()
ax2.set_xticklabels(labels, rotation=30)
Run Code Online (Sandbox Code Playgroud)
这产生了没有x_tick标签的图,因此我进行了更深入的研究:我让它在循环时打印标签,并且它们是空文本实例。但是,这是很奇怪的地方:当我只获取标签(labels = ax2.get_xticklabels()),并让plot函数返回文本实例列表(返回标签)时,列表中的Text实例确实具有正确的字符串,上面的代码将按预期生成字符串列表。我不确定为什么当我尝试在函数内部对其进行编辑时文本实例为空,但是当我使函数返回标签未经编辑时,它是正确的。有什么建议吗?
我有一个DataFrame,其中多索引作为列.我想按级别1进行分组并应用生成新列的函数.我希望将此计算列添加到每个组,因此我的数据框将为每个组添加新列.
我做了一个小的虚拟脚本和函数来复制我想做的事情.
import pandas as pd
import numpy as np
columns = [('A','julian'),('A','geoffrey'),
('B','julian'),('B','geoffrey'),
('C','julian'),('C','geoffrey')]
columns = pd.MultiIndex.from_tuples(columns)
dataframe = pd.DataFrame(data=np.random.rand(10,6),columns=columns)
def addColumn(inputDF):
group = inputDF.columns[0][1]
inputDF['sum', group] = inputDF.sum(axis=1)
return inputDF
newColumnsDataframe = dataframe.groupby(level=1, axis=1).apply(addColumn)
Run Code Online (Sandbox Code Playgroud)
原始数据框如下所示:
A B C
julian geoffrey julian geoffrey julian geoffrey
0 0.204082 0.073676 0.795725 0.279702 0.258185 0.258112
1 0.263235 0.096733 0.507324 0.541198 0.525919 0.757652
2 0.196243 0.028613 0.653408 0.364365 0.174911 0.924733
3 0.528785 0.831569 0.654160 0.738029 0.940831 0.294473
4 0.853517 0.263250 0.803087 0.855270 0.701937 …Run Code Online (Sandbox Code Playgroud) 我有一个函数,可以将SQL服务器中的表中的表拉入Python中的数据框,但是它会强制所有列标题都小写。代码如下:
connection = pypyodbc.connect('Driver={SQL Server};'
'Server=' + server + ';'
'Database=' + database + ';'
'uid=' + username + ';'
'pwd=' + password + ';')
query = 'SELECT * FROM ' + tableName
#set dict value to dataframe imported from SQL
tableDict[tableName] = pd.read_sql(query, connection)
Run Code Online (Sandbox Code Playgroud)
SQL中的标头例如:pmiManufacturingHeadline_Level它在我的熊猫数据框中显示为:pmimanufacturingheadline_level
任何人都有一个想法如何使pandas.read_sql保持原始大小写?
我正在编写一个程序,在日期系列中比较和排序值非常重要.但是,我遇到浮子不精确的问题
我从我的SQL服务器中提取这些数据,这些数据都应该是1.6.然而,结果却略有不同(见下文).因此,当我使用dataframe.rank()时,它不会将这两个日期视为相同的排名,而是将排名从01/02/2004排在02/01/2005之上.
任何人都知道如何处理这个,以便这两个最终会在同一级别?
modelInputData.loc['01/02/2004',('Level','inflationCore','EUR')]
Out[126]: 1.6000000000000003
modelInputData.loc['02/01/2005',('Level','inflationCore','EUR')]
Out[127]: 1.6000000000000001
Run Code Online (Sandbox Code Playgroud)