python-2.7 - 基于行索引、列引用的数据框中的返回值

标签 python-2.7 pandas

我的目标是将“年”列中的每个值与相应的列年份(即 1999 年、2000 年)进行比较。然后我想从相应的列返回相应的值。例如,对于 2004 年的阿富汗(第一行),我想找到名为“2004”的列并返回包含阿富汗的行中的值。

这是表格。作为引用,此表是 1999 年至 2010 年每个国家/地区的 gdp 表和单个定义年份的教育程度之间的 sql 连接的结果。我的最终目标是返回教育数据所在年份的 gdp。

country year    men_ed_yrs  women_ed_yrs    total_ed_yrs    1999    2000    2001    2002    2003    2004    2005    2006    2007    2008    2009    2010
0   Afghanistan 2004    11  5   8   NaN NaN 2461666315  4128818042  4583648922  5285461999  6.275076e+09    7.057598e+09    9.843842e+09    1.019053e+10    1.248694e+10    1.593680e+10
1   Albania 2004    11  11  11  3414760915  3632043908  4060758804  4435078648  5746945913  7314865176  8.158549e+09    8.992642e+09    1.070101e+10    1.288135e+10    1.204421e+10    1.192695e+10
2   Algeria 2005    13  13  13  48640611686 54790060513 54744714110 56760288396 67863829705 85324998959 1.030000e+11    1.170000e+11    1.350000e+11    1.710000e+11    1.370000e+11    1.610000e+11
3   Andorra 2008    11  12  11  1239840270  1401694156  1484004617  1717563533  2373836214  2916913449  3.248135e+09    3.536452e+09    4.010785e+09    4.001349e+09    3.649863e+09    3.346317e+09
4   Anguilla    2008    11  11  11  NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

目前我的做法是:

for value in df_combined_column_named['year']: #loops through each year in year column
    if value in df_combined_column_named.columns

有什么想法吗?

最佳答案

使用df.loc :

In [62]: df.loc[df['country']=='Afghanistan', '2004'].item()
Out[62]: 5285461999.0

df.loc[rows, columns] 可以为 rows 接受 bool 系列(例如 df['country']=='Afghanistan') columns 的列标签(例如 '2004')。它将返回 bool 系列为 True 且位于指定列中的行的值。

通常这可以是多个值,因此返回一个 Series。但是,在这种情况下,Series 中只有一个值。因此,要仅获取该值,请调用 item method .


请注意,从 df 的已发布字符串表示中不清楚数字列标签是否为字符串是整数。如果数字列标签是整数,那么您需要使用

df.loc[df['country']=='Afghanistan', 2004].item()

(2004 前后没有引号)。


如果您要对这种形式进行大量“查询”,您希望将 country 列设置为索引:

df = df.set_index('country')

然后您可以使用 get_value 访问行标签为 'Afghanistan' 且列标签为 '2004' 的单元格中的值:

In [65]: df.get_value('Afghanistan', '2004')
Out[65]: 5285461999.0

关于python-2.7 - 基于行索引、列引用的数据框中的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37402093/

相关文章:

python - Pygame圆碰撞?

Python numpy 解包函数

xcode - Pandas 在 Mac 上安装错误

python - 将函数行明智地应用于 Pandas 数据框

Python 定义函数只输出第一个目录

Python Gtk 按钮

python - 为什么与多个 Popen 子进程一起使用时会发生通信死锁?

python - 删除不符合要求的列值

python - 如何在 python 中将单行拆分为具有特定列号的多列?

python - 数据框的标准差?