我正在做一些模拟.通过变量参数(rpm仅在这种情况下)进行系统分析,并将结果数据帧的每一个最后一行附加results_df到一个汇总数据帧,该数据帧df包含了对我的系统的baviour依赖于变化rpm.
为了获得适当的绘图和数据分析索引,我将列表中的各种值(此处rpm)转换为pandas系列,ser并将此系列与df包含我感兴趣的结果的汇总数据框连接起来.
由于我感兴趣的每个计算的结果只是每个计算的最后一行,我results_df通过使用从结果数据框中提取这些数据.tail(1).
到目前为止我所做的工作如下所示:
rpm = [0.25, 0.3, 0.5, 0.75, 1.0, 1.5, 2.0]
ser = pd.Series(rpm, name='rpm')
df = pd.DataFrame()
df_list = list()
for i, val in enumerate(rpm):
results_df = get_some_data_from_somwhere()
df_list.append(results_df.tail(1))
df = df.append(df_list, ignore_index=True)
df = pd.concat([df, ser], axis=1)
df.set_index('rpm', inplace=True)
with open('foo.csv', 'w') as f:
data.to_csv(f, index=True, header=True, decimal=',', sep=' ', float_format='%.3f')
Run Code Online (Sandbox Code Playgroud)
我得到的这个csv文件有以下格式:
rpm cooling_inner heating_inner cooling_outlet …Run Code Online (Sandbox Code Playgroud) 我想提起这件事,只是因为它很疯狂.也许韦斯有一些想法.该文件非常规则:1100行x~3M列,数据以制表符分隔,仅由整数0,1和2组成.显然,这不是预期的.
如果我预先填充下面的数据帧,它会占用大约26GB的RAM.
h = open("ms.txt")
header = h.readline().split("\t")
h.close()
rows=1100
df = pd.DataFrame(columns=header, index=range(rows), dtype=int)
Run Code Online (Sandbox Code Playgroud)
系统信息:
欢迎任何想法.
我有两个dataframes df1并df2从同一个源进行了计算的是,但具有不同的方法,从而大部分值是相同的,具有一定的差异.现在,我想df1根据中的值进行更新df2.
例如:
df1 = pd.DataFrame({'name':['john','deb','john','deb'], 'col1':[490,500,425,678], 'col2':[456,625,578,789],'col3':['TN','OK','OK','NY']})
name col1 col2 col3
john 490 456 TN
deb 500 625 OK
john 425 578 OK
deb 678 789 NY
df2 = pd.DataFrame({'name':['deb','john','deb','john','deb'], 'col1':[400,490,500,425,678], 'col2':[225,456,625,578,789],'col3':['TN','TN','OK','OK','NY']})
name col1 col2 col3
deb 400 225 TN
john 490 456 TN
deb 500 625 OK
john 425 578 OK
deb 678 789 NY
Run Code Online (Sandbox Code Playgroud)
所以,在这种情况下,.append应该追加仅第一行df2来df1.所以,只有当一个新行df2不存在df1(基于名称和col3)时才会添加/更新该列,否则它不会.
这几乎concat应该是应该做的事情.
创建两个系列:s1和s2从df.
每个都有相同的长度但不同的指数.s1.multiply(s2)联合不匹配的指数而不是乘以它们.
我只想逐渐s1反对s2忽略不匹配的指数.
我可以运行s1.reset_index()并s2.reset_index()再取我这两个DFS希望之列,因为它把原始索引到一个单独的列,但这是乏味的,我想有可能是做一个简单的方法.
s1.multiply(s2, axis='columns')
Run Code Online (Sandbox Code Playgroud)
似乎也没有用
我尝试获得各种大熊猫日期的日间三角洲.然而,对于大于292年的时间增量,我获得了负值.例如,
import pandas as pd
dates = pd.Series(pd.date_range('1700-01-01', periods=4500, freq='m'))
days_delta = (dates-dates.min()).astype('timedelta64[D]')
Run Code Online (Sandbox Code Playgroud)
但是,使用DatetimeIndex,我可以做到它,它按我想要的方式工作,
import pandas as pd
import numpy as np
dates = pd.date_range('1700-01-01', periods=4500, freq='m')
days_fun = np.vectorize(lambda x: x.days)
days_delta = days_fun(dates.date - dates.date.min())
Run Code Online (Sandbox Code Playgroud)
那么问题是如何获得Series对象的正确days_delta?
我有一个基于这个例子的HUD游戏
我有一个带有两个gluOrtho2D视图的pyglet应用程序.一个被映射到屏幕的1/1,作为我的HUD.一个映射到游戏世界的,所以它可以扩展.
当游戏世界中的玩家在某个位置渲染时,我想在HUD中显示该玩家的名字.但是HUD对世界物体渲染位置一无所知,世界对屏幕的缩放一无所知.
有没有办法找出屏幕上呈现的内容,或者是否有可能找出或只是反作用于上下文中的当前缩放集?
from pyglet import clock, window, font
from pyglet.gl import *
Run Code Online (Sandbox Code Playgroud)
class Camera(object):
def __init__(self, win):
self.win = win
def project_world(self):
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(-500, 1000, -500, 500)
def project_hud(self):
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(0, self.win.width, 0, self.win.height)
Run Code Online (Sandbox Code Playgroud)
class Hud(object):
def __init__(self, win: window.Window):
self.fps = clock.ClockDisplay()
self.helv = font.load('Helvetica', 12.0)
self.text = font.Text(self.helv, "This text does not scale", \
x=0, y=0, color=(1, 1, 1, 0.5))
def draw(self):
glMatrixMode(GL_MODELVIEW) …Run Code Online (Sandbox Code Playgroud) 我尝试过使用 poedit 1.4.6>另存为,但 .mo 不是一个选项。
我在坐在(本地)网络上的MySQL数据库中有500万行(所以快速连接,而不是在互联网上).
与数据库的连接工作正常,但如果我尝试做
f = pd.read_sql_query('SELECT * FROM mytable', engine, index_col = 'ID')
Run Code Online (Sandbox Code Playgroud)
这需要很长时间.即使是分块chunksize也会很慢.此外,我真的不知道它是挂在那里还是确实检索信息.
我想问一下,对于那些在数据库上处理大数据的人来说,他们如何检索他们的Pandas会话数据?
难道是"聪明",例如,运行查询,以返回结果csv文件并加载该成熊猫?听起来比它需要的更多.
我有一个大的数据框,有2个级别的列,但是1级行,我正在尝试按如下方式对其进行排序:级别0:按字母顺序排列; 第1级:自定义排序.
import pandas as pd
dictionary = {'A' : {'M': [1,2,3,4,5],
'L': [6,7,8,9,1],
'F': [3,5,1,3,5] },
'C' : {'M': [2,3,4,5,6],
'L': [7,8,9,1,2],
'F': [0,1,6,3,5] },
'B' : {'M': [1,5,2,5,3],
'L': [9,5,6,3,4],
'F': [6,2,7,1,5] }
}
reform = {(outerKey, innerKey): values for outerKey, innerDict in dictionary.iteritems() for innerKey, values in innerDict.iteritems()}
pd.DataFrame(reform,index=['g','h','i','j','k'])
Run Code Online (Sandbox Code Playgroud)
我当时拥有的是什么
# A B C
# F L M F L M F L M
# g 3 6 1 6 9 1 0 7 2 …Run Code Online (Sandbox Code Playgroud) 我有一个从 selenium-webdriver 得到的列表:
List<WebElement> allElements = driver.findElements(By.xpath(""));
Run Code Online (Sandbox Code Playgroud)
现在我想获取前 6 个元素并打印它们。