我在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])当所有其他列成功插值时似乎没有插值。
当我运行该函数时,我没有抛出任何错误,也没有尝试向后插值。
关于为什么会出现此问题的任何想法?
编辑:我还应该提一下,相关列中缺少相同数量的值 - 并且在相同的行中 - 与成功插值的其他列相同。
答案 0 :(得分:0)
在仔细查看数据之后,似乎插值在某些列上没有用,因为我在groupby对象中的组的第一行中缺少数据。