Python插值不会引发任何错误 - 但也不会做任何错误

时间:2018-04-24 07:47:59

标签: python pandas dataframe interpolation

我在Pandas中尝试了一些我学到的DataFrame操作。我正在玩的数据集来自EY Data Science Challenge

这第一部分可能无关紧要,但只是针对上下文 - 我已经完成并设置了一些索引:

import pandas as pd
import numpy as np

# loading the main dataset
df_main = pd.read_csv(filename)

'''Sorting Indexes'''
# getting rid of the id column
del df_main['id']

# sorting values by LOCATION and GENDER columns
# setting index to LOCATION (1st tier) then GENDER (2nd tier) and then re- 
#sorting
df_main = df_main.sort_values(['LOCATION','TIME'])
df_main = df_main.set_index(['LOCATION','TIME']).sort_index()

我遇到的问题是缺少值 - 我已经确定可以插入第7~18列,因为很多数据都是逐年非常一致的。

所以我做了一个简单的函数来获取列列表并为每列应用插值函数。

'''Missing Values'''
x = df_main.groupby("LOCATION")

def interpolate_columns(list_of_column_names):
    for column in list_of_column_names:
        df_main[column] = x[column].apply(lambda x: x.interpolate(how = 'linear'))

interpolate_columns( list(df_main.columns[7:18]) )

然而,我得到的问题是其中一个列(电力访问(有访问权限的城市人口百分比)[1.3_ACCESS.ELECTRICITY.URBAN])当所有其他列成功插值时似乎没有插值。

当我运行该函数时,我没有抛出任何错误,也没有尝试向后插值。

关于为什么会出现此问题的任何想法?

编辑:我还应该提一下,相关列中缺少相同数量的值 - 并且在相同的行中 - 与成功插值的其他列相同。

1 个答案:

答案 0 :(得分:0)

在仔细查看数据之后,似乎插值在某些列上没有用,因为我在groupby对象中的组的第一行中缺少数据。