Python Pandas Dataframe 用同一会话的另一个单元格的值替换单元格值

Posted

技术标签:

【中文标题】Python Pandas Dataframe 用同一会话的另一个单元格的值替换单元格值【英文标题】:Python Pandas Dataframe replace cell value by value of another cell of the same session 【发布时间】:2018-05-28 07:24:16 【问题描述】:

我正在使用 Python Pandas Dataframe 对一些日志进行数据分析。 我有一个类似的csv: number_items event_type ... ... ... session_id ... ... ...

我的问题是,在我的会话中有不同类型的事件,其中只有一个具有 number_items 的东西。或者,numbers_items 是我感兴趣的。

所以我想看看每个事件的每个参数如何影响number_items。

所以,我想做的是: 将拥有它的事件的 number_items(始终是会话中的最后一个)复制到会话的所有其他事件。将每个 event_type 分别放在不同的 Dataframe 中(避免大量只因为属性不对应事件而存在的空值)并分析。

我在第一部分被阻止了

我试过这样的:

currentSession = '0'
currentItems = 0
for index, row in reversed(df.iterrows()) :
    if row['session_id'] == currentSession :
        row['number_items'] = currentItems
    else : 
        currentSession = row['session_id']
        currentItems = row['number_items']

显然,它不起作用,我只是想展示这个想法。

我是 Python 的新手,所以我希望能得到一些帮助。

谢谢

编辑:数据样本here

出于安全考虑,我只放相关信息

【问题讨论】:

请发布您的输入数据和预期输出的最小示例(从您的文本描述中很难解读) 放一个指向数据样本的链接 【参考方案1】:

您从 iterrows 返回的行是副本,因此它们不会覆盖您的原始数据框。使用另一种形式的迭代器来引用原始数据框。

看这里Updating value in iterrow for pandas

(我也注意到完全确定您正在尝试做什么,但本能地它似乎效率很低 - 我怀疑有自然的 pandas 方法可能会在一两行中完成您想要实现的目标,请查找位置( ) 方法)

【讨论】:

即使反转也不能正常工作,我得到错误。我想知道是否没有比迭代更好的方法。如果存在,则为会话的所有单元格提供事件 x 的单元格的值,如果不存在则为 0 reversed 仅在迭代器具有 __reversed__() 方法或支持过程时才有效,熊猫数据框可能会或可能不会这样做。听起来好像没有。

以上是关于Python Pandas Dataframe 用同一会话的另一个单元格的值替换单元格值的主要内容,如果未能解决你的问题,请参考以下文章

python pandas groupby分组后的数据怎么用

python,爬虫,pandas的DataFrame处理后的数据,输出到文本后中间这些数据都没有展开怎么办

python pandas-->删除DataFrame某行或某列

Python Pandas Dataframe 用同一会话的另一个单元格的值替换单元格值

Python: Pandas的DataFrame如何按指定list排序

求教pandas的dataframe索引值只有一行,用loc如何不返回series