猿问

在迭代多个 Pandas 数据帧时删除行

所以我有一个数据框列表:


yldDF = [dem2y, dem5y, dem10y, dem30y]



    Unnamed: 0 BBK01.WT0202

4   2014-01-02         0.21

5   2014-01-03         0.21

6   2014-01-04            .

7   2014-01-05            .

8   2014-01-06         0.20

9   2014-01-07         0.21

10  2014-01-08         0.21

11  2014-01-09         0.23

12  2014-01-10         0.21

13  2014-01-11            .

每个数据框看起来像上面那样。现在,当我尝试遍历数据帧以删除“。” 在第二列中它似乎不起作用。


dem2y = pd.read_csv("0202.csv")

dem5y = pd.read_csv("0505.csv")

dem10y = pd.read_csv("1010.csv")

dem30y = pd.read_csv("3030.csv")


### Begin cleaning


yldDF = [dem2y, dem5y, dem10y, dem30y]


for i in yldDF: 


    i.drop(i.columns[2], axis = 1,inplace = True)

    i.drop(range(4),inplace=True)

    i = i[i[i.columns[1]].apply(lambda x: str(x)!=".")]

我已经在单个 Dataframe 上尝试了最后一行,它似乎工作得很好,但是当我将它作为循环的一部分进行尝试时,它似乎没有任何效果。有什么我在这里想念的吗?或者这可能是一个错误?


沧海一幻觉
浏览 160回答 1
1回答

哈士奇WWW

如果问题只是i被修改,你可以试试这个技巧:# Store your `pandas.DataFrame` in a dictyldDict = {'dem2y': dem2y, 'dem5y': dem5y, 'dem10y': dem10y, 'dem30y': dem30y}# Loop on the keys of the dictfor keys in yldDict.keys():     df = yldDict.get(keys, 'error') # Get pandas.DataFrame from dict    # Do the operation you need to do    df.drop(df.columns[2], axis = 1, inplace = True)    df.drop(range(4), inplace=True)    df = df[df[df.columns[1]].apply(lambda x: str(x)!=".")]    # Post to dict    yldDict[keys] = df# Extract from dictdem2y, dem5y, dem10y, dem30y = yldDict['dem2y'], yldDict['dem5y'], yldDict['dem10y'], yldDict['dem30y']# Delete dictdel yldDict
随时随地看视频慕课网APP

相关分类

Python
我要回答