DataFrame取出某一个值所在行的其他列的值
一种简单的方法实现在dataframe中取出某一个值所对应行的另一个列的值
·
在使用dataframe时经常会碰到一个问题,即如何取出某一个值所在行的另一个列的值,下面简单介绍一种简单的方法
定义一个实例DataFrame
import pandas as pd
df = pd.DataFrame({'name':['DENVER', 'BOULDER', 'DURANGO'],'pop':[634265, 98889, 17069]})
print(df)
实例的DataFrame如下: 为美国科罗拉多州的三个城市的名字和其人口
name pop
0 DENVER 634265
1 BOULDER 98889
2 DURANGO 17069
提出需求:打印出人口(pop)最多的城市的名字(name)
经过多次的尝试,发现一种可以快速实现该需求的方法:
1.首先需要找出最大的pop是多少 —— 有以下两种方法:
① 利用 dataframe 的 describe() 功能
des=df.describe()
print(des)
describe() 用于显示表格数据每个列(数值列)的统计信息 其返回值仍是一个dataframe 结果如下:
max一行即可找出最大的pop数值
pop
count 3.000000
mean 250074.333333
std 335224.520829
min 17069.000000
25% 57979.000000
50% 98889.000000
75% 366577.000000
max 634265.000000
② 更简单的找出最大pop的方法:
max_pop = max(df['pop'])
# 打印出 max_pop 的值为 634265
2.其次打印出最大pop对应的城市的名字name —— 有以下两种方法:
在这个步骤中我遇到了困扰很久的问题,无论我怎么打印,打印的结果都是object类型,无法直接取出字符串
探索良久,发现了以下的简便方法:
① 最简单的方法 直接得到城市名字的字符串
首先将pop列设置为索引index,之后便可以通过loc方法直接根据索引和列名取出所需要的值
df=df.set_index('POP') #将条件的列设为索引
cityName=df.loc[max_pop,'NAME'] #按照dataframe的.loc[索引,列名]取出对应的元素值
print(cityName)
#结果如下:
'DENVER'
② 第二种方法则可以取出最大pop所在的整行
#首先看一下这个布尔表达式得到的是什么:
df['pop']==634265
#结果:
0 True
1 False
2 False
Name: pop, dtype: bool
# 取出true所在行:
df[df['pop']==634265]
#结果:
name pop
0 DENVER 634265
总结
上述为本人的探索过程,个人认为最简单的方法还是设置索引,之后通过索引来取所需要的值。
更多推荐
已为社区贡献1条内容
所有评论(0)