如何根据在熊猫数据框中的其他列上应用条件来提取列值

Posted

技术标签:

【中文标题】如何根据在熊猫数据框中的其他列上应用条件来提取列值【英文标题】:How to extract column values based on applying condition on other column in pandas dataframe 【发布时间】:2019-03-28 20:16:52 【问题描述】:
print("Someone has killed :.4f with headshot, have  kills, while the most kills ever recorded is .".format(pubg_main_df['headshotKills'].max(), pubg_main_df[pubg_main_df['headshotKills']==pubg_main_df['headshotKills'].max()]['kills'], pubg_main_df['kills'].max()))

我想要的是在 headshotKills 最大的地方获得 'Kills' 的值。

但我得到了:

有人用爆头杀死了 26.0000,有 910050 60 名称:kills,dtype:int64 杀死,而有记录的最多杀死是 60。

应该是:

有人用爆头杀死了 26.0000,有 42 次击杀,而有记录的最多击杀数是 60。

变量的类型有:

headshotKills int64

杀死int64

请帮忙。 :)

【问题讨论】:

【参考方案1】:

set_indexidxmax 一起使用:

#sample data
pubg_main_df= pd.DataFrame('kills':[60,  42], 'headshotKills':[3, 26])

print("Someone has killed :.4f with headshot, have  kills, while the most kills ever recorded is ."
            .format(pubg_main_df['headshotKills'].max(), 
                    pubg_main_df.set_index('kills')['headshotKills'].idxmax(), 
                    pubg_main_df['kills'].max()))


Someone has killed 26.0000 with headshot, have 42 kills, while the most kills ever recorded is 60.

【讨论】:

我想要找出爆头击杀最大的同一行的“击杀”值 @PrakashShelke - 所以pubg_main_df.set_index('kills')['headshotKills'].idxmax() 不工作? 不,'有人用爆头杀死了 26.0000 人,有 60 人杀死,而有记录的最多杀死人是 60' 以上是结果。 @PrakashShelke - 如果检查print(pubg_main_df.sort_values('headshotKills', ascending=False)) 第一行是什么?在对第一行进行排序后,显示最大 headshotKills 的行并杀死。如果有 kills=60 那么你的输出是正确的。 是的!谢谢@jezrael headshotKills 26 杀死 60 是的!非常感谢:)

以上是关于如何根据在熊猫数据框中的其他列上应用条件来提取列值的主要内容,如果未能解决你的问题,请参考以下文章

应用一个函数来翻译熊猫数据框中的一列,条件是其他列

Pandas:如何根据特定列上特定值的条件选择数据框中的行[重复]

熊猫数据框列上的子字符串

确定熊猫数据框中的列值何时更改

根据熊猫数据框中其他列的条件和值创建新列[重复]

根据熊猫中的另一个列值有条件地填充列值