2

我有一个 DataFrame df,其中包含 2014 年到 2018 年的一些国家统计数据。一些国家/地区每年都有值,而一些国家/地区缺少一些。DataFrame 如下所示:

countryName   2014    2015    2016    2017    2018
Afghanistan     ..      ..     281      ..      ..
Albania         ..      ..      ..     891     901
Algeria        791     801     804     817     820
...

我只想保留最新的数据值,所以对于上面的 DataFrame,结果应该是:

countryName   value
Afghanistan     281 # the most recent value from 2016
Albania         901 # the most recent value from 2018
Algeria         820 # the most recent value from 2018
...
4

2 回答 2

3

您可以使用列轴上的前向填充来获取最后一个数值

data = [{'countryName': 'Afghanistan',
  '2014': nan,
  '2015': nan,
  '2016': 281.0,
  '2017': nan,
  '2018': nan},
 {'countryName': 'Albania',
  '2014': nan,
  '2015': nan,
  '2016': nan,
  '2017': 891.0,
  '2018': 901.0},
 {'countryName': 'Algeria',
  '2014': 791.0,
  '2015': 801.0,
  '2016': 804.0,
  '2017': 817.0,
  '2018': 820.0}]

df = pd.DataFrame(data)

    df.ffill(1).iloc[:, [0, -1]].set_axis(['countryName', 'value'], axis=1)

   countryName  value
0  Afghanistan  281.0
1      Albania  901.0
2      Algeria  820.0
于 2021-04-07T09:03:04.380 回答
0

你可以这样做:

假设你的 df 是

 countryName   2014   2015   2016   2017 2018
0  Afghanistan    NaN    NaN  281.0    NaN   ..
1      Albania    NaN    NaN    NaN  891.0  901
2      Algeria  791.0  801.0  804.0  817.0  820

然后

df['LastValue'] = df.iloc[:, 1:].ffill(axis=1).iloc[:, -1]

生产

 countryName   2014   2015   2016   2017   2018  LastValue
0  Afghanistan    NaN    NaN  281.0    NaN    NaN      281.0
1      Albania    NaN    NaN    NaN  891.0  901.0      901.0
2      Algeria  791.0  801.0  804.0  817.0  820.0      820.0
于 2021-04-07T08:54:59.107 回答