熊猫数据框中的计算列

鲁路修(L​​elouch Lamperouge)

我使用以下代码创建了一个data_frame:


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,输出多少时间floghlogslog花费多少时间(通过减去相应time_as_float2和time_as_float1)
2.对于每个的hlogflog..,展示他们第一次看到了MD5(最小time_as_float1)和他们最后一次看到一个MD5(MAX(time_as_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]

我什至不确定我构造data_frame的方式是否正确,因为感觉我的要求是如此简单,默认情况下会支持它们。

FooBar

没错,构建数据框架的方式并不是很好。尝试利用与numpy的强大互动关系。

我首先创建数据框(对于所有索引,您应该事先知道多少行才能获得更好的性能),然后按行填充。由于我没有python 3和python,因此无法改善这一部分queue

# first initialize dataframe
data_frame = pd.DataFrame(columns=['type', 'hash', 't0', 't1'], index=np.arange(10))

# this is now what would have to be inside the queue loop
data_dict = {'type': name, 'hash':md5hash,
             't0': times[0], 't1': times[1]}
name = "hlog"

data_series = pd.Series(data_dict)

data_frame.loc[0] = data_series
data_series[['t0', 't1']] += 0.5 # now I just quickly "fake" an additional loop to create more data
data_frame.loc[1] = data_series

现在这是我的数据集的样子:

   type hash   t0   t1
0  hlog  MD5  0.1  0.2
1  hlog  MD5  0.6  0.7
2   NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN
(...)

因此,现在,对于t0分别使用不同的列t1,您的第一个问题变得非常简单:

data_frame['time-it-took'] = data_frame['t1'] - data_frame['t0']

在SO上也经常回答第二个问题:这是一种典型的groupby-apply组合,您可以在文档中找到很多信息:#设置为索引:type data_frame.set_index(['type'],inplace = True)#按类型:分组,并将最小todata_frame ['首次'] = data_frame.groupby(level = 0).apply(lambda x:x ['t0']。min())设置为值

现在,这就是我的数据的样子(索引仍设置为哈希类型):

     hash   t0   t1 time-it-took  first-time
type                                        
hlog  MD5  0.1  0.2          0.1         0.1
hlog  MD5  0.6  0.7          0.1         0.1
NaN   NaN  NaN  NaN          NaN         NaN

一旦您了解了这里发生的情况,我相信您可以将其应用于找到最大的“ t1”。

同样,他们的关键是正确设置数据帧,这是您应该花费更多时间进行的工作。尝试考虑以最合理的方式构造数据的方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算熊猫数据框中的新列

来自分类Dev

熊猫计算数据框中列本身的数据

来自分类Dev

相同的计算应用熊猫数据框中的列

来自分类Dev

分组后计算熊猫数据框中列的相邻差异

来自分类Dev

如何计算熊猫数据框中列值更改的频率

来自分类Dev

如何计算熊猫数据框列中的值的比率?

来自分类Dev

计算分组数据框的列中的项目对数。(熊猫)

来自分类Dev

如何计算熊猫数据框中列值更改的频率?

来自分类Dev

计算熊猫数据框中的路径数据

来自分类Dev

熊猫数据框列的条件计算

来自分类Dev

列之间的熊猫数据框计算

来自分类Dev

计算熊猫数据框中的不同值

来自分类Dev

计算熊猫数据框中的最新零

来自分类Dev

熊猫数据框中的按单元计算

来自分类Python

计算熊猫数据框中的不同单词

来自分类Dev

计算分组熊猫数据框中的总和

来自分类Dev

计算熊猫数据框中的过度分区

来自分类Dev

计算熊猫数据框中的单个单词

来自分类Dev

计算熊猫数据框中的匹配组合

来自分类Dev

熊猫数据框组中的计算

来自分类Dev

如何计算熊猫数据框中的值

来自分类Dev

熊猫数据框计算

来自分类Dev

通过逐行计算来计算熊猫数据框中的新列

来自分类Dev

计算熊猫数据框中列中每个值的列表中每个元素的性能

来自分类Dev

熊猫计算另一个数据框列中列值的频率

来自分类Dev

熊猫从数据框中的其他两个列变量计算新列

来自分类Dev

如何计算熊猫数据框中组内列中连续值的数量?

来自分类Dev

忽略NaN的变化来计算熊猫中数据框中每一列的值变化

来自分类Dev

用其他列中的计算替换熊猫数据框中的NaN值

Related 相关文章

热门标签

归档