gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 00:17:35 24 4
gpt4 key购买 nike

我的目标是将“年”列中的每个值与相应的列年份(即 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com