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 用同一会话的另一个单元格的值替换单元格值