我使用以下代码创建了一个数据帧:
data_series = {}
while not q.empty():
(name, data_dict) = q.get()
data_series[name] = pd.Series(data_dict)`
data_frame = pd.DataFrame(data_series)
#data_dict is of the format { MD5: [time_as_float1, time_as_float2] }
#I have multiple data_dicts stored in a queue (created by multiple worker threads)
我希望基本能够实现以下目标:
1对于每个MD5,输出flog
、hlog
和{
2对于hlog
,flog
中的每一个,显示他们第一次看到MD5的时间(最小时间为_float1)和最后一次看到MD5的时间(max(time_为_float2)
data_frame:
Index: 395 entries, 0037B4F499705D725C2B3B00956B574E to FF11433CC64568110D3AD46037290725
Data columns (total 3 columns):
flog 220 non-null values
hlog 175 non-null values
slog 20 non-null values
dtypes: object(3)
(Pdb) data_frame['hlog']
0037B4F499705D725C2B3B00956B574E [1401808481.57, 1401808481.7]
016E73F1038CE46AF4A619453AC7DE70 [1401808491.38, 1401808491.51]
0250F3B15665E8B00F7D58CCA8C2C8F4 NaN
0260FA375596B150DF8B4D7E3CA2D934 NaN
03173B333E22CE63F6485AC87D616878 [1401808482.36, 1401808482.49]
我甚至不确定我构建数据帧的方式是否正确,因为我觉得我的需求非常简单,它们在默认情况下是受支持的。在
你说得对,你构建数据帧的方式并不好。尽量利用大熊猫与小猫咪的强烈互动。在
我首先创建数据帧(对于所有索引,您应该知道为了获得更好的性能,您需要预先知道有多少行),然后按行填充。我不能改进这一部分,因为我没有python3和
queue
。在现在我的数据集是这样的:
^{pr2}$现在,有了
t0
和t1
的单独列,您的第一个问题变得非常简单:第二个问题在这里也经常得到回答:这是一个典型的groupby-apply组合,您可以在文档中找到很多信息: #设为索引:类型 数据_frame.set_索引(['type',inplace=True) #按类型:分组,并设置最小值
to
data_frame['first-time']=数据_框架.groupby(级别=0)。应用(lambda x:x['t0'].min())现在我的数据是这样的(索引仍然设置为散列类型):
一旦你理解了这里发生了什么,我相信你可以用这个来找到最大值't1'。在
同样,他们的关键是正确设置数据帧,这是你应该花更多时间做的事情。试着思考一下你的数据结构最合理的方式。在
相关问题 更多 >
编程相关推荐