栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将for循环应用于Pandas中的多个DataFrame

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将for循环应用于Pandas中的多个DataFrame

这是因为每次执行这样的子集时,

df[<whatever>]
您都将返回一个新的数据帧,并将其分配给
df
循环变量,该变量在您每次进行下一次迭代时都会消失(尽管您保留了最后一个)。这类似于切片列表:

>>> list1 = [1,2,3,4]>>> list2 = [11,12,13,14]>>> for lyst in list1,list2:...   lyst = lyst[1:-1]... >>> list1, list2([1, 2, 3, 4], [11, 12, 13, 14])>>> lyst[12, 13]

通常,如果要实际就地修改列表,则需要使用mutator方法。等效地,对于数据框,您可以在索引器上使用赋值,例如将

.loc/.ix/.iloc/
etc与该
.dropna
方法结合使用,请小心传递
inplace=True
参数。假设我有三个数据框,而我只想保留第二列为正的行:

警告:这种方式并不理想,请查看编辑以获得更好的方式

In [11]: df1Out[11]:0         1         2         30  0.957288 -0.170286  0.406841 -3.0584431  1.762343 -1.837631 -0.867520  1.6661932  0.618665  0.660312 -1.319740 -0.0248543 -2.008017 -0.445997 -0.028739 -0.2276654  0.638419 -0.271300 -0.918894  1.5240095  0.957006  1.181246  0.513298  0.3701746  0.613378 -0.852546 -1.778761 -1.3868487 -1.891993 -0.304533 -1.427700  0.099904In [12]: df2Out[12]:0         1         2         30 -0.521018  0.407258 -1.167445 -0.3635031 -0.879489  0.008560  0.224466 -0.1658632  0.550845 -0.102224 -0.575909 -0.4047703 -1.171828 -0.912451 -1.197273  0.7194894 -0.887862  1.073306  0.351835  0.3139535 -0.517824 -0.096929 -0.300282  0.7160206 -1.121527  0.183219  0.938509  0.8428827  0.003498 -2.241854 -1.146984 -0.751192In [13]: df3Out[13]:0         1         2         30  0.240411  0.795132 -0.305770 -0.3322531 -1.162097  0.055346  0.094363 -1.2548592 -0.493466 -0.717872  1.090417 -0.5918723  1.021246 -0.060453 -0.013952  0.3049334 -0.859882 -0.947950  0.562609  1.3136325  0.917199  1.186865  0.354839 -1.7717876 -0.694799 -0.695505 -1.077890 -0.8805637  1.088068 -0.893466 -0.188419 -0.451623In [14]: for df in df1, df2, df3:   ....:     df.loc[:,:] = df.loc[df[1] > 0,:]   ....:     df.dropna(inplace = True,axis =0)   ....:In [15]: df1dfOut[15]:0         1         2         32  0.618665  0.660312 -1.319740 -0.0248545  0.957006  1.181246  0.513298  0.370174In [16]: df2Out[16]:0         1         2         30 -0.521018  0.407258 -1.167445 -0.3635031 -0.879489  0.008560  0.224466 -0.1658634 -0.887862  1.073306  0.351835  0.3139536 -1.121527  0.183219  0.938509  0.842882In [17]: df3Out[17]:0         1         2         30  0.240411  0.795132 -0.305770 -0.3322531 -1.162097  0.055346  0.094363 -1.2548595  0.917199  1.186865  0.354839 -1.771787

编辑添加:

我想我找到了一种更好的方法,只是使用该

.drop
方法。

In [21]: df1Out[21]:0         1         2         30 -0.804913 -0.481498  0.076843  1.1365671 -0.457197 -0.903681 -0.474828  1.2894432 -0.820710  1.610072  0.175455  0.7120523  0.715610 -0.178728 -0.664992  1.2614654 -0.297114 -0.591935  0.487698  0.7604505  1.035231 -0.108825 -1.058996  0.0563206  1.579931  0.958331 -0.653261 -0.1712457  0.685427  1.447411  0.001002  0.241999In [22]: df2Out[22]:0         1         2         30  1.660864  0.110002  0.366881  1.7655411 -0.627716  1.341457 -0.552313  0.5788542  0.277738  0.128419 -0.279720 -1.1974833 -1.294724  1.396698  0.108767  1.3534544 -0.379995  0.215192  1.446584  0.5300205  0.557042  0.339192 -0.105808 -0.6932676  1.293941  0.203973 -3.051011  1.6381437 -0.909982  1.998656 -0.057350  2.279443In [23]: df3Out[23]:0         1         2         30 -0.002327 -2.054557 -1.752107 -0.9111781 -0.998328 -1.119856  1.468124 -0.9611312 -0.048568  0.373192 -0.666330  0.8677193  0.533597 -1.222963  0.119789 -0.0379494  1.203075 -0.773511  0.475809  1.3529435 -0.984069 -0.352267 -0.313516  0.1382596  0.114596  0.354404  2.119963 -0.4524627 -1.033029 -0.787237  0.479321 -0.818260In [25]: for df in df1,df2,df3:   ....:     df.drop(df.index[df[1] < 0],axis=0,inplace=True)   ....:In [26]: df1Out[26]:0         1         2         32 -0.820710  1.610072  0.175455  0.7120526  1.579931  0.958331 -0.653261 -0.1712457  0.685427  1.447411  0.001002  0.241999In [27]: df2Out[27]:0         1         2         30  1.660864  0.110002  0.366881  1.7655411 -0.627716  1.341457 -0.552313  0.5788542  0.277738  0.128419 -0.279720 -1.1974833 -1.294724  1.396698  0.108767  1.3534544 -0.379995  0.215192  1.446584  0.5300205  0.557042  0.339192 -0.105808 -0.6932676  1.293941  0.203973 -3.051011  1.6381437 -0.909982  1.998656 -0.057350  2.279443In [28]: df3Out[28]:0         1         2         32 -0.048568  0.373192 -0.666330  0.8677196  0.114596  0.354404  2.119963 -0.452462

当然更快:

In [8]: timeit.Timer(stmt="df.loc[:,:] = df.loc[df[1] > 0, :];df.dropna(inplace = True,axis =0)", setup="import pandas as pd,numpy as np; df = pd.Dataframe(np.random.random((8,4)))").timeit(10000)Out[8]: 23.69621358400036In [9]: timeit.Timer(stmt="df.drop(df.index[df[1] < 0],axis=0,inplace=True)", setup="import pandas as pd,numpy as np; df = pd.Dataframe(np.random.random((8,4)))").timeit(10000)Out[9]: 11.476448250003159


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662598.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号