python - Pandas 获取 map 函数中元素的索引

标签 python pandas

我正在使用 pandas 来分析现有的到不同节点的 ssh session ,因为我已经解析了 ssh 守护进程日志并且我有一个包含以下列的 DataFrame:

  • Node:建立连接的节点名称
  • Session: session 的ID
  • Start:表示连接何时开始的时间戳
  • Finish:连接结束时的时间戳

这是部分数据:

In [375]: sessions[1:10]                                 
Out[375]: 
    Node  Session               Start              Finish
1  svg01    27321 2015-02-23 07:24:45 2015-02-23 07:50:57
2  svg02    14171 2015-02-23 10:25:08 2015-02-23 14:33:24
3  svg02    14273 2015-02-23 10:26:21 2015-02-23 14:36:19
4  svg01    14401 2015-02-23 10:28:16 2015-02-23 14:38:04
5  svg01    26408 2015-02-23 14:01:49 2015-02-23 18:38:25
6  svg03    13722 2015-02-23 18:24:39 2015-02-23 20:51:59
7  svg05    17637 2015-02-23 19:10:00 2015-02-23 19:10:20

我想生成一个附加列,其中包含在建立新连接时给定节点中已建立 session 的数量。

在不考虑节点的情况下,我可以使用以下方法计算:

count_sessions = lambda t: sessions[(sessions.Start<t) & (sessions.Finish>t)].shape[0]
sessions['OpenSessions'] = sessions['Start'].map(count_sessions)

问题是我还需要考虑“节点”列值,但我不知道如何获取它。

我可以使用 Series 中元素的索引来获取 session DataFrame 中的节点,但我没有找到任何方法来检索传递给 map 的元素的索引。

最佳答案

def count(df):
    count_sessions = lambda t: df[(df.Start<t) & (df.Finish>t)].shape[0]
    df['OpenSessions'] = df['Start'].map(count_sessions)
    return df

print sessions.groupby('Node').apply(count)

输出是:

    Node  Session                Start               Finish  OpenSessions
0  svg01    27321  2015-02-23 07:24:45  2015-02-23 07:50:57             0
1  svg02    14171  2015-02-23 10:25:08  2015-02-23 14:33:24             0
2  svg02    14273  2015-02-23 10:26:21  2015-02-23 14:36:19             1
3  svg01    14401  2015-02-23 10:28:16  2015-02-23 14:38:04             0
4  svg01    26408  2015-02-23 14:01:49  2015-02-23 18:38:25             1
5  svg03    13722  2015-02-23 18:24:39  2015-02-23 20:51:59             0
6  svg05    17637  2015-02-23 19:10:00  2015-02-23 19:10:20             0

阅读this寻找灵感。

关于python - Pandas 获取 map 函数中元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28828973/

相关文章:

python - 根据两个表的一列中共有的值对两个表进行求和

python - 有没有办法在Python中获取给定框架的函数参数的原始值?

python - 使用 rpy2 来自 pandas DataFrame 的分位数回归模型中的非一致性数组

python - 比较因子变量每个级别的数据帧的两个连续行的值 - Python Pandas

python - 查找列表中的三元组数

python - 如何从漂亮的表格中保存表格?

python - 在 IP 地址列上合并两个 DataFrame

python - 从数据框的每个值创建列名和最后一个值的元组

python - 检查 DataFrame 或 ndrray 是否包含数字

使用 Pool 的 Python 多重处理递归失控