因此,当我尝试通过使用drop或del删除熊猫数据框中的列时,即使没有归因于它们的值,它也会保留由于某种原因删除的索引。这真的弄乱了我的for循环。我也在使用泡菜,我可以尽可能地重现原始问题。
这是我的数据框:
import pandas as pd
import numpy as np
import pickle
abc=b'\x80\x03cpandas.core.frame\nDataFrame\nq\x00)\x81q\x01}q\x02(X\x05\x00\x00\x00_dataq\x03cpandas.core.internals.managers\nBlockManager\nq\x04)\x81q\x05(]q\x06(cpandas.core.indexes.base\n_new_Index\nq\x07cpandas.core.indexes.multi\nMultiIndex\nq\x08}q\t(X\x06\x00\x00\x00levelsq\n]q\x0b(h\x07cpandas.core.indexes.base\nIndex\nq\x0c}q\r(X\x04\x00\x00\x00dataq\x0ecnumpy.core.multiarray\n_reconstruct\nq\x0fcnumpy\nndarray\nq\x10K\x00\x85q\x11C\x01bq\x12\x87q\x13Rq\x14(K\x01K\x04\x85q\x15cnumpy\ndtype\nq\x16X\x02\x00\x00\x00O8q\x17K\x00K\x01\x87q\x18Rq\x19(K\x03X\x01\x00\x00\x00|q\x1aNNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK?tq\x1bb\x89]q\x1c(X\x03\x00\x00\x00AAPq\x1dX\x03\x00\x00\x00CVXq\x1eX\x03\x00\x00\x00XOKq\x1fX\x04\x00\x00\x00DWDPq etq!bX\x04\x00\x00\x00nameq"Nu\x86q#Rq$h\x07h\x0c}q%(h\x0eh\x0fh\x10K\x00\x85q&h\x12\x87q\'Rq((K\x01K\x06\x85q)h\x19\x89]q*(X\x04\x00\x00\x00Openq+X\x04\x00\x00\x00Highq,X\x03\x00\x00\x00Lowq-X\x05\x00\x00\x00Closeq.X\t\x00\x00\x00Adj Closeq/X\x06\x00\x00\x00Volumeq0etq1bh"Nu\x86q2Rq3eX\x05\x00\x00\x00codesq4]q5(h\x0fcpandas.core.indexes.frozen\nFrozenNDArray\nq6K\x00\x85q7h\x12\x87q8Rq9(K\x01K\x18\x85q:h\x16X\x02\x00\x00\x00i1q;K\x00K\x01\x87q<Rq=(K\x03h\x1aNNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq>b\x89C\x18\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03q?tq@bh\x0fh6K\x00\x85qAh\x12\x87qBRqC(K\x01K\x18\x85qDh=\x89C\x18\x00\x01\x02\x03\x04\x05\x00\x01\x02\x03\x04\x05\x00\x01\x02\x03\x04\x05\x00\x01\x02\x03\x04\x05qEtqFbeX\t\x00\x00\x00sortorderqGNX\x05\x00\x00\x00namesqH]qI(NNeu\x86qJRqKcpandas.core.indexes.datetimes\n_new_DatetimeIndex\nqLcpandas.core.indexes.datetimes\nDatetimeIndex\nqM}qN(h\x0ecpandas.core.arrays.datetimes\nDatetimeArray\nqO)\x81qP}qQ(h\x03h\x0fh\x10K\x00\x85qRh\x12\x87qSRqT(K\x01K\x07\x85qUh\x16X\x02\x00\x00\x00M8qVK\x00K\x01\x87qWRqX(K\x04X\x01\x00\x00\x00<qYNNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00}qZ(C\x02nsq[K\x01K\x01K\x01tq\\\x86q]tq^b\x89C8\x00\x08D+\xa5\xa4\xb0\x15\x000r\xb7v\xa5\xb0\x15\x00\xd0*\xe8\xbc\xa8\xb0\x15\x00p\xe3\x18\x03\xac\xb0\x15\x00\x98\x11\xa5\xd4\xac\xb0\x15\x00\xc0?1\xa6\xad\xb0\x15\x00\xe8m\xbdw\xae\xb0\x15q_tq`bX\x05\x00\x00\x00_freqqaNX\x06\x00\x00\x00_dtypeqbcpandas.core.dtypes.dtypes\nDatetimeTZDtype\nqc)\x81qd}qe(X\x04\x00\x00\x00unitqfX\x02\x00\x00\x00nsqgX\x02\x00\x00\x00tzqhcpytz\n_p\nqi(X\x10\x00\x00\x00America/New_YorkqjJ\xa0\xba\xff\xffK\x00X\x03\x00\x00\x00LMTqktqlRqmububh"X\x08\x00\x00\x00DatetimeqnhhhmX\x04\x00\x00\x00freqqoNu\x86qpRqqe]qr(h\x0fh\x10K\x00\x85qsh\x12\x87qtRqu(K\x01K\x17K\x07\x86qvh\x16X\x02\x00\x00\x00f8qwK\x00K\x01\x87qxRqy(K\x03hYNNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tqzb\x89B\x08\x05\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\xd7\xa3p=\n\x8fc@)\\\x8f\xc2\xf5\x90c@\xf6(\\\x8f\xc2\xa5c@\\\x8f\xc2\xf5(\xb4c@\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\xecQ\xb8\x1e\x85\x9bc@\x1f\x85\xebQ\xb8\xa6c@\xf6(\\\x8f\xc2\xb5c@\xd7\xa3p=\n\xc7c@\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x14\xaeG\xe1z|c@\xecQ\xb8\x1e\x85\x8bc@R\xb8\x1e\x85\xeb\xa1c@\\\x8f\xc2\xf5(\xb4c@\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\n\xd7\xa3p=\x92c@\x85\xebQ\xb8\x1e\xa5c@\xf6(\\\x8f\xc2\xb5c@{\x14\xaeG\xe1\xc2c@\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\n\xd7\xa3p=\x92c@\x85\xebQ\xb8\x1e\xa5c@\xf6(\\\x8f\xc2\xb5c@{\x14\xaeG\xe1\xc2c@\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x86\xd3@\x00\x00\x00\x00\x00`\xd3@\x00\x00\x00\x00\xc0\xd1\xf0@\x00\x00\x00\x00p\xab\xf9@\x9a\x99\x99\x99\x99y_@\xf6(\\\x8f\xc2u_@\xecQ\xb8\x1e\x85k_@\x14\xaeG\xe1zT_@\x14\xaeG\xe1zt_@\n\xd7\xa3p=z_@\xb8\x1e\x85\xebQx_@\x9a\x99\x99\x99\x99y_@\x9a\x99\x99\x99\x99y_@\xecQ\xb8\x1e\x85k_@\xd7\xa3p=\nw_@\x00\x00\x00\x00\x00\x80_@\\\x8f\xc2\xf5(|_@=\n\xd7\xa3p}_@\x9a\x99\x99\x99\x99y_@\xf6(\\\x8f\xc2u_@\xecQ\xb8\x1e\x85k_@33333S_@\xa4p=\n\xd7s_@q=\n\xd7\xa3p_@fffffv_@\x9a\x99\x99\x99\x99y_@\x9a\x99\x99\x99\x99y_@\xecQ\xb8\x1e\x85k_@\x14\xaeG\xe1zt_@fffffv_@H\xe1z\x14\xaew_@=\n\xd7\xa3p}_@\x9a\x99\x99\x99\x99y_@\x9a\x99\x99\x99\x99y_@\xecQ\xb8\x1e\x85k_@\x14\xaeG\xe1zt_@fffffv_@H\xe1z\x14\xaew_@=\n\xd7\xa3p}_@\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7f\x00\x00\x00\x00\x00\x00\xf8\x7fq{tq|bh\x0fh\x10K\x00\x85q}h\x12\x87q~Rq\x7f(K\x01K\x01K\x07\x86q\x80h\x16X\x02\x00\x00\x00i8q\x81K\x00K\x01\x87q\x82Rq\x83(K\x03hYNNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq\x84b\x89C8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x83\x03\x00\x00\x00\x00\x00\xda^\x02\x00\x00\x00\x00\x00Y\x13\x02\x00\x00\x00\x00\x00\x85\x91\x01\x00\x00\x00\x00\x00q\x85tq\x86be]q\x87(h\x07h\x08}q\x88(h\n]q\x89(h\x07h\x0c}q\x8a(h\x0eh\x0fh\x10K\x00\x85q\x8bh\x12\x87q\x8cRq\x8d(K\x01K\x04\x85q\x8eh\x19\x89]q\x8f(h\x1dh\x1eh\x1fh etq\x90bh"Nu\x86q\x91Rq\x92h\x07h\x0c}q\x93(h\x0eh\x0fh\x10K\x00\x85q\x94h\x12\x87q\x95Rq\x96(K\x01K\x06\x85q\x97h\x19\x89]q\x98(h+h,h-h.h/h0etq\x99bh"Nu\x86q\x9aRq\x9beh4]q\x9c(h\x0fh6K\x00\x85q\x9dh\x12\x87q\x9eRq\x9f(K\x01K\x17\x85q\xa0h=\x89C\x17\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03q\xa1tq\xa2bh\x0fh6K\x00\x85q\xa3h\x12\x87q\xa4Rq\xa5(K\x01K\x17\x85q\xa6h=\x89C\x17\x00\x01\x02\x03\x04\x05\x00\x01\x02\x03\x04\x00\x01\x02\x03\x04\x05\x00\x01\x02\x03\x04\x05q\xa7tq\xa8behGNhH]q\xa9(NNeu\x86q\xaaRq\xabh\x07h\x08}q\xac(h\n]q\xad(h\x07h\x0c}q\xae(h\x0eh\x0fh\x10K\x00\x85q\xafh\x12\x87q\xb0Rq\xb1(K\x01K\x04\x85q\xb2h\x19\x89]q\xb3(h\x1dh\x1eh\x1fh etq\xb4bh"Nu\x86q\xb5Rq\xb6h\x07h\x0c}q\xb7(h\x0eh\x0fh\x10K\x00\x85q\xb8h\x12\x87q\xb9Rq\xba(K\x01K\x06\x85q\xbbh\x19\x89]q\xbc(h+h,h-h.h/h0etq\xbdbh"Nu\x86q\xbeRq\xbfeh4]q\xc0(h\x0fh6K\x00\x85q\xc1h\x12\x87q\xc2Rq\xc3(K\x01K\x01\x85q\xc4h=\x89C\x01\x01q\xc5tq\xc6bh\x0fh6K\x00\x85q\xc7h\x12\x87q\xc8Rq\xc9(K\x01K\x01\x85q\xcah=\x89C\x01\x05q\xcbtq\xccbehGNhH]q\xcd(NNeu\x86q\xceRq\xcfe}q\xd0X\x06\x00\x00\x000.14.1q\xd1}q\xd2(X\x04\x00\x00\x00axesq\xd3h\x06X\x06\x00\x00\x00blocksq\xd4]q\xd5(}q\xd6(X\x06\x00\x00\x00valuesq\xd7huX\x08\x00\x00\x00mgr_locsq\xd8h\x0fh\x10K\x00\x85q\xd9h\x12\x87q\xdaRq\xdb(K\x01K\x17\x85q\xdch\x83\x89C\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00q\xddtq\xdebu}q\xdf(h\xd7h\x7fh\xd8cbuiltins\nslice\nq\xe0K\x0bK\x0cK\x01\x87q\xe1Rq\xe2ueustq\xe3bX\x04\x00\x00\x00_typq\xe4X\t\x00\x00\x00dataframeq\xe5X\t\x00\x00\x00_metadataq\xe6]q\xe7ub.'
datas=pickle.loads(abc)
print(datas.to_string())
输出:
AAP CVX XOK DWDP
Open High Low Close Adj Close Volume Open High Low Close Adj Close Volume Open High Low Close Adj Close Volume Open High Low Close Adj Close Volume
Datetime
2019-07-12 07:15:00-04:00 NaN NaN NaN NaN NaN NaN 125.90 125.90 125.90 125.90 125.90 0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2019-07-12 07:30:00-04:00 NaN NaN NaN NaN NaN NaN 125.84 125.90 125.84 125.90 125.90 0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2019-07-12 08:30:00-04:00 NaN NaN NaN NaN NaN NaN 125.68 125.68 125.68 125.68 125.68 0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2019-07-12 09:30:00-04:00 156.47 156.86 155.89 156.57 156.57 19992.0 125.32 125.86 125.30 125.82 125.82 230340 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2019-07-12 09:45:00-04:00 156.53 157.21 156.36 157.16 157.16 19840.0 125.82 126.00 125.81 125.85 125.85 155354 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2019-07-12 10:00:00-04:00 157.18 157.68 157.06 157.68 157.68 68892.0 125.91 125.94 125.76 125.87 125.87 136025 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2019-07-12 10:15:00-04:00 157.63 158.22 157.63 158.09 158.09 105143.0 125.88 125.96 125.85 125.96 125.96 102789 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
我尝试删除Nan公园,看起来还不错...
for i in datas.columns.levels[0]:
datas[i,'Indicator']=np.log(datas[i,'High']/6+
datas[i,'Low']/6+
datas[i,'Open']/3+
datas[i,'Close']/3)
del datas[i,'High']
del datas[i,'Low']
del datas[i,'Open']
del datas[i,'Close']
del datas[i,'Adj Close']
datas[i,'Volume']=np.log(datas[i,'Volume']+1.0)
for i in datas.columns.levels[0]: #Deletes all the depreciated symbols, yahoo finance guy didn't deal with his exceptions
boolean=pd.isnull(datas[i]).all()
if boolean[0] or boolean[1]:
datas.drop(i,axis=1, inplace=True)
print(i)
print(datas.to_string())
输出: XOK DWDP
AAP CVX AAP CVX
Volume Volume Indicator Indicator
Datetime
2019-07-12 07:15:00-04:00 NaN 0.000000 NaN 4.835488
2019-07-12 07:30:00-04:00 NaN 0.000000 NaN 4.835250
2019-07-12 08:30:00-04:00 NaN 0.000000 NaN 4.833739
2019-07-12 09:30:00-04:00 9.903137 12.347316 5.052875 4.832890
2019-07-12 09:45:00-04:00 9.895506 11.953468 5.055131 4.835157
2019-07-12 10:00:00-04:00 11.140310 11.820601 5.058854 4.835303
2019-07-12 10:15:00-04:00 11.563086 11.540443 5.061846 4.835607
但是事实证明,这些列永远都不会消失。
print(datas.columns)
输出:
MultiIndex(levels=[['AAP', 'CVX', 'XOK', 'DWDP'], ['Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume', 'Indicator']],
codes=[[0, 1, 0, 1], [5, 5, 6, 6]])
/usr/local/lib/python3.6/dist-packages/pandas/core/generic.py:3812: PerformanceWarning: dropping on a non-lexsorted multi-index without a level parameter may impact performance.
new_axis = axis.drop(labels, errors=errors)
答案 0 :(得分:0)
https://github.com/pandas-dev/pandas/issues/2770
这似乎可以解决问题
datas.columns = datas.columns.remove_unused_levels()
datas.columns