我有一个Pandas数据框架,其中包含以下表格:
我想在“value”列中找到哪个阶段具有最大值,如果最大值相同,则显示具有最大值的相位的第一个值或随机值
期望结果表:
我的解决方案是:
df.groupby(['name'])[['phase','value']].max()
但它返回了不正确的值。
编辑:稍微更改了值以更准确地表示问题
一个可能的解决方案,可以避免排序是与groupby:
df.loc[df.groupby('name', sort = False).value.idxmax()]
name phase value
0 BOB 1 0.90
3 JOHN 2 0.45
7 FRANK 3 0.60
尝试先对数据帧进行排序:
df = df.sort_values(
by=["name", "value", "phase"], ascending=[True, False, True]
)
x = df.groupby("name", as_index=False).first()
print(x)
印刷品:
name phase value
0 BOB 1 0.90
1 FRANK 1 0.60
2 JOHN 1 0.45
您不需要使用groupby
。按value
和阶段
对值进行排序(必要时调整顺序)并按名称
删除重复项:
out = (df.sort_values(['value', 'phase'], ascending=[False, True])
.drop_duplicates('name')
.sort_index(ignore_index=True))
print(out)
# Output
name phase value
0 BOB 1 0.90
1 JOHN 2 0.45
2 FRANK 3 0.60
问题内容: 我有一个包含屏幕名称,tweet,收藏夹等的Pandas DataFrame。我想找到“ favcount”(我已经做过)的最大值,并返回该“ tweet”的屏幕名称 我似乎找不到任何东西,任何人都可以帮助我朝正确的方向发展吗? 问题答案: 使用 来获取最大价值的指标。那你可以用 编辑: 现已弃用,切换为
查看以下: 问题是它不会在ipython笔记本中按默认值打印所有行,但我必须切片才能查看结果行。即使以下选项也不会更改输出: 有人知道如何显示整个阵列吗?
从0.13版本开始,可以通过引用尚未在数据帧中的. loc或. ix中的索引来追加到数据帧。看到留档。 那么我就不明白为什么这条线失败了: 这将生成ValueError: 这里是所有的治疗方法。形状=(53,12),,,,。 在这里设置放大的正确方法是什么?
问题内容: 如何获得系列中最常出现的物品? 考虑系列 返回值应该是 问题答案: 您可以使用并提取第一个值: 这不一定是低效率的。与往常一样,对您的数据进行测试以查看适合的数据。
这似乎是非常基本的知识,但我还是卡住了,尽管我有一些数据处理的理论背景(通过其他软件)。值得一提的是,我是蟒蛇和熊猫图书馆的新手。 我的任务是将系列名称列的值作为单独的列(从长到宽转换)。我花了很长时间尝试不同的方法,但只有错误。 例如: 我犯了一个错误: ...很多短信...通过值的长度是2487175,索引暗示2 有谁能指导我完成这个过程吗?谢谢 它用于代码“mydata=mydata”。pi
我有一个数据帧,如: 所以我想通过两个“for循环”添加一些列,如: 新的类似数据帧的图片: 我的代码不起作用: 如何编写代码来获得像第二张图片这样的数据帧?