Out[1015]: gp2
department MOBILE QA TA WEB MOBILE QA TA WEB
minutes minutes minutes minutes growth growth growth growth
period
2016-12-24 NaN NaN 140.0 400.0 NaN NaN 0.0 260.0
2016-12-25 NaN NaN NaN 80.0 NaN NaN NaN -320.0
2016-12-26 NaN NaN NaN 20.0 NaN NaN NaN -60.0
2016-12-27 NaN 45.0 NaN 180.0 NaN 25.0 NaN 135.0
2016-12-28 600.0 NaN NaN 15.0 420.0 NaN NaN -585.0
... ... ... ... ... ... ... ... ...
2017-01-03 NaN NaN NaN 80.0 NaN NaN NaN -110.0
2017-01-04 20.0 NaN NaN NaN -60.0 NaN NaN NaN
2017-02-01 120.0 NaN NaN NaN 100.0 NaN NaN NaN
2017-02-02 45.0 NaN NaN NaN -75.0 NaN NaN NaN
2017-02-03 NaN 45.0 NaN 30.0 NaN 0.0 NaN -15.0
I need MOBILE.minutes and MOBILE.growth to be one after another.
I tried this
In [1019]:gp2.columns = gp2.columns.sort_values()
In [1020]: gp2
Out[1020]:
department MOBILE QA TA WEB
growth minutes growth minutes growth minutes growth minutes
period
2016-12-24 NaN NaN 140.0 400.0 NaN NaN 0.0 260.0
2016-12-25 NaN NaN NaN 80.0 NaN NaN NaN -320.0
2016-12-26 NaN NaN NaN 20.0 NaN NaN NaN -60.0
2016-12-27 NaN 45.0 NaN 180.0 NaN 25.0 NaN 135.0
2016-12-28 600.0 NaN NaN 15.0 420.0 NaN NaN -585.0
... ... ... ... ... ... ... ... ...
2017-01-03 NaN NaN NaN 80.0 NaN NaN NaN -110.0
2017-01-04 20.0 NaN NaN NaN -60.0 NaN NaN NaN
2017-02-01 120.0 NaN NaN NaN 100.0 NaN NaN NaN
2017-02-02 45.0 NaN NaN NaN -75.0 NaN NaN NaN
2017-02-03 NaN 45.0 NaN 30.0 NaN 0.0 NaN -15.0
It sorted just the columns but didn't assign them proper values.
Just use df.sort_index:
df = df.sort_index(level=[0, 1], axis=1)
print(df)
MOBILE QA TA WEB
growth minutes growth minutes growth minutes growth minutes
period
2016-12-24 NaN NaN NaN NaN 0.0 140.0 260.0 400.0
2016-12-25 NaN NaN NaN NaN NaN NaN -320.0 80.0
2016-12-26 NaN NaN NaN NaN NaN NaN -60.0 20.0
2016-12-27 NaN NaN 25.0 45.0 NaN NaN 135.0 180.0
2016-12-28 420.0 600.0 NaN NaN NaN NaN -585.0 15.0
2017-01-03 NaN NaN NaN NaN NaN NaN -110.0 80.0
2017-01-04 -60.0 20.0 NaN NaN NaN NaN NaN NaN
2017-02-01 100.0 120.0 NaN NaN NaN NaN NaN NaN
2017-02-02 -75.0 45.0 NaN NaN NaN NaN NaN NaN
2017-02-03 NaN NaN 0.0 45.0 NaN NaN -15.0 30.0
Related
I'm getting a weird problem after hours of trying to figure out how to merge correcting.
Assuming two dataframes:
financials_Balance_Sheet_yearly.loc[financials_Balance_Sheet_yearly.ticker == 'AAPL.US']
Unnamed: 0 ticker date filing_date currency_symbol totalassets intangibleassets earningassets othercurrentassets totalliab totalstockholderequity deferredlongtermliab othercurrentliab commonstock retainedearnings otherliab goodwill otherassets cash totalcurrentliabilities shorttermdebt shortlongtermdebt shortlongtermdebttotal otherstockholderequity propertyplantequipment totalcurrentassets longterminvestments nettangibleassets shortterminvestments netreceivables longtermdebt inventory accountspayable totalpermanentequity noncontrollinginterestinconsolidatedentity temporaryequityredeemablenoncontrollinginterests accumulatedothercomprehensiveincome additionalpaidincapital commonstocktotalequity preferredstocktotalequity retainedearningstotalequity treasurystock accumulatedamortization noncurrrentassetsother deferredlongtermassetcharges noncurrentassetstotal capitalleaseobligations longtermdebttotal noncurrentliabilitiesother noncurrentliabilitiestotal negativegoodwill warrants preferredstockredeemable capitalsurpluse liabilitiesandstockholdersequity cashandshortterminvestments propertyplantandequipmentgross accumulateddepreciation commonstocksharesoutstanding networkingcapital netdebt netinvestedcapital freecashflow changeinworkingcapital
128270 128270 AAPL.US 2019-09-30 2019-10-31 USD 3.385160e+11 NaN NaN 1.235200e+10 2.480280e+11 9.048800e+10 NaN 4.324200e+10 4.517400e+10 4.589800e+10 5.050300e+10 NaN 3.297800e+10 4.884400e+10 1.057180e+11 1.624000e+10 1.624000e+10 1.080470e+11 -5.840000e+08 3.737800e+10 1.628190e+11 1.053410e+11 9.048800e+10 5.171300e+10 4.580400e+10 9.180700e+10 4.106000e+09 4.623600e+10 NaN NaN NaN -5.840000e+08 NaN 4.517400e+10 NaN 4.589800e+10 NaN NaN 3.297800e+10 NaN 1.756970e+11 NaN 9.180700e+10 5.050300e+10 1.423100e+11 NaN NaN NaN NaN 3.385160e+11 1.005570e+11 3.737800e+10 NaN 1.859565e+10 5.710100e+10 5.920300e+10 1.985350e+11 NaN NaN
128288 128288 AAPL.US 2018-09-30 2018-11-05 USD 3.657250e+11 NaN NaN 1.208700e+10 2.585780e+11 1.071470e+11 2.797000e+09 4.023000e+10 4.020100e+10 7.040000e+10 4.891400e+10 NaN 2.228300e+10 2.591300e+10 1.168660e+11 2.074800e+10 2.074800e+10 1.144830e+11 -3.454000e+09 4.130400e+10 1.313390e+11 1.707990e+11 1.071470e+11 4.038800e+10 4.899500e+10 9.373500e+10 3.956000e+09 5.588800e+10 NaN NaN NaN -3.454000e+09 NaN 4.020100e+10 NaN 7.040000e+10 NaN NaN 2.228300e+10 NaN 2.343860e+11 NaN 9.373500e+10 4.518000e+10 1.417120e+11 NaN NaN NaN NaN 3.657250e+11 6.630100e+10 4.130400e+10 NaN 2.000044e+10 1.447300e+10 8.857000e+10 2.216300e+11 NaN NaN
128311 128311 AAPL.US 2017-09-30 2017-11-03 USD 3.753190e+11 2.298000e+09 NaN 1.393600e+10 2.412720e+11 1.340470e+11 2.836000e+09 7.548000e+09 3.586700e+10 9.833000e+10 4.325100e+10 5.717000e+09 1.817700e+10 2.028900e+10 1.008140e+11 1.847300e+10 1.847300e+10 1.156800e+11 -1.500000e+08 3.378300e+10 1.286450e+11 1.947140e+11 1.260320e+11 5.389200e+10 3.567300e+10 9.720700e+10 4.855000e+09 7.479300e+10 0.0 0.0 0.0 -1.500000e+08 0.0 3.586700e+10 0.0 9.833000e+10 0.0 NaN 1.016200e+10 NaN 2.466740e+11 NaN 9.720700e+10 4.041500e+10 1.404580e+11 NaN NaN NaN NaN 3.753190e+11 7.418100e+10 3.378300e+10 NaN 2.100677e+10 2.783100e+10 9.539100e+10 2.497270e+11 NaN NaN
128337 128337 AAPL.US 2016-09-30 2016-10-26 USD 3.216860e+11 3.206000e+09 NaN 8.283000e+09 1.934370e+11 1.282490e+11 2.930000e+09 8.080000e+09 3.125100e+10 9.636400e+10 3.900400e+10 5.414000e+09 8.757000e+09 2.048400e+10 7.900600e+10 1.160500e+10 1.160500e+10 8.703200e+10 6.340000e+08 2.701000e+10 1.068690e+11 1.704300e+11 1.196290e+11 4.667100e+10 1.575400e+10 7.542700e+10 2.132000e+09 5.932100e+10 NaN NaN NaN 6.340000e+08 NaN 3.125100e+10 NaN 9.636400e+10 NaN NaN -1.726200e+10 NaN 2.148170e+11 NaN 7.542700e+10 3.607400e+10 1.144310e+11 NaN NaN NaN NaN 3.216860e+11 6.715500e+10 2.701000e+10 NaN 2.200112e+10 NaN 6.654800e+10 NaN NaN NaN
128386 128386 AAPL.US 2014-09-30 2014-10-27 USD 2.318390e+11 4.142000e+09 NaN 9.806000e+09 1.202920e+11 1.115470e+11 3.031000e+09 8.491000e+09 2.331300e+10 8.715200e+10 7.598000e+09 4.616000e+09 3.764000e+09 1.384400e+10 6.344800e+10 6.308000e+09 3.529500e+10 3.529500e+10 1.082000e+09 2.062400e+10 6.853100e+10 1.301620e+11 1.027890e+11 1.123300e+10 1.746000e+10 2.898700e+10 2.111000e+09 4.864900e+10 0.0 0.0 0.0 1.082000e+09 0.0 2.331300e+10 0.0 8.715200e+10 0.0 NaN -1.649500e+10 NaN 1.633080e+11 NaN 2.898700e+10 2.482600e+10 5.684400e+10 NaN NaN NaN NaN 2.318390e+11 2.507700e+10 2.062400e+10 NaN 2.449065e+10 NaN 2.145100e+10 NaN NaN NaN
128413 128413 AAPL.US 2013-09-30 2013-10-30 USD 2.070000e+11 4.179000e+09 NaN 6.882000e+09 8.345100e+10 1.235490e+11 2.625000e+09 7.435000e+09 1.976400e+10 1.042560e+11 6.344000e+09 1.577000e+09 5.146000e+09 1.425900e+10 4.365800e+10 NaN NaN 1.696000e+10 -4.710000e+08 1.659700e+10 7.328600e+10 1.062150e+11 1.177930e+11 2.628700e+10 1.310200e+10 1.696000e+10 1.764000e+09 3.622300e+10 0.0 0.0 0.0 -4.710000e+08 0.0 1.976400e+10 0.0 1.042560e+11 0.0 NaN -1.134300e+10 NaN 1.337140e+11 NaN 1.696000e+10 2.020800e+10 3.979300e+10 NaN NaN NaN NaN 2.070000e+11 4.054600e+10 1.659700e+10 NaN 2.608654e+10 NaN 2.701000e+09 NaN NaN NaN
128450 128450 AAPL.US 2012-09-30 2012-10-31 USD 1.760640e+11 4.224000e+09 NaN 6.458000e+09 5.785400e+10 1.182100e+11 2.648000e+09 5.953000e+09 1.642200e+10 1.012890e+11 5.465000e+09 1.135000e+09 5.478000e+09 1.074600e+10 3.854200e+10 NaN NaN NaN 4.990000e+08 1.545200e+10 5.765300e+10 9.212200e+10 1.128510e+11 1.838300e+10 1.093000e+10 0.000000e+00 7.910000e+08 3.258900e+10 0.0 0.0 0.0 4.990000e+08 0.0 1.642200e+10 0.0 1.012890e+11 0.0 NaN -8.369000e+09 NaN 1.184110e+11 NaN NaN 1.666400e+10 1.931200e+10 NaN NaN NaN NaN 1.760640e+11 2.912900e+10 1.545200e+10 NaN 2.646994e+10 NaN -1.074600e+10 NaN NaN NaN
128453 128453 AAPL.US 2011-09-30 2011-10-26 USD 1.163710e+11 3.536000e+09 NaN 4.529000e+09 3.975600e+10 7.661500e+10 1.686000e+09 4.091000e+09 1.333100e+10 6.284100e+10 3.627000e+09 8.960000e+08 3.556000e+09 9.815000e+09 2.797000e+10 NaN NaN NaN 4.430000e+08 7.777000e+09 4.498800e+10 5.561800e+10 7.218300e+10 1.613700e+10 5.369000e+09 0.000000e+00 7.760000e+08 2.387900e+10 0.0 0.0 0.0 4.430000e+08 0.0 1.333100e+10 0.0 6.284100e+10 0.0 NaN -4.603000e+09 NaN 7.138300e+10 NaN NaN 1.010000e+10 1.178600e+10 NaN NaN NaN NaN 1.163710e+11 2.595200e+10 7.777000e+09 NaN 2.622606e+10 NaN -9.815000e+09 NaN NaN NaN
128514 128514 AAPL.US 2010-09-30 2010-10-27 USD 7.518300e+10 3.420000e+08 NaN 3.447000e+09 2.739200e+10 4.779100e+10 1.139000e+09 2.984000e+09 1.066800e+10 3.716900e+10 2.370000e+09 7.410000e+08 2.263000e+09 1.126100e+10 2.072200e+10 NaN NaN NaN -4.600000e+07 4.768000e+09 4.167800e+10 2.539100e+10 4.670800e+10 1.435900e+10 5.510000e+09 0.000000e+00 1.051000e+09 1.773800e+10 0.0 0.0 0.0 -4.600000e+07 0.0 1.066800e+10 0.0 3.716900e+10 0.0 NaN -2.037000e+09 NaN 3.350500e+10 NaN NaN 5.531000e+09 6.670000e+09 NaN NaN NaN NaN 7.518300e+10 2.562000e+10 4.768000e+09 NaN 2.589194e+10 NaN -1.126100e+10 NaN NaN NaN
128550 128550 AAPL.US 2008-09-30 2008-11-05 USD 3.957200e+10 3.520000e+08 NaN 4.987000e+09 1.854200e+10 2.103000e+10 NaN 8.572000e+09 7.177000e+09 1.384500e+10 3.775000e+09 2.070000e+08 1.868000e+09 1.187500e+10 1.409200e+10 NaN NaN NaN NaN 2.455000e+09 3.469000e+10 NaN NaN 1.261500e+10 2.422000e+09 NaN 5.090000e+08 5.520000e+09 NaN NaN NaN 8.000000e+06 NaN 7.177000e+09 NaN NaN NaN NaN 1.193000e+09 NaN 4.882000e+09 NaN NaN NaN 4.450000e+09 NaN NaN NaN NaN 3.957200e+10 NaN 2.455000e+09 NaN 2.525989e+10 NaN -1.187500e+10 NaN NaN NaN
128581 128581 AAPL.US 2006-09-30 2006-12-29 USD 1.720500e+10 1.390000e+08 NaN 1.284000e+09 7.221000e+09 9.984000e+09 NaN 3.081000e+09 4.355000e+09 5.607000e+09 3.690000e+08 3.800000e+07 1.217000e+09 6.392000e+09 6.471000e+09 NaN NaN NaN NaN 1.281000e+09 1.450900e+10 NaN NaN 3.718000e+09 1.252000e+09 NaN 2.700000e+08 3.390000e+09 NaN NaN NaN 2.200000e+07 NaN 4.355000e+09 NaN NaN NaN NaN 1.238000e+09 NaN 2.696000e+09 NaN NaN NaN 7.500000e+08 NaN NaN NaN NaN 1.720500e+10 NaN 1.281000e+09 NaN 2.457073e+10 NaN -6.392000e+09 NaN NaN NaN
128588 128588 AAPL.US 2005-09-30 2005-12-01 USD 1.155100e+10 6.500000e+07 NaN 5.620000e+08 4.085000e+09 7.466000e+09 NaN 1.705000e+09 3.521000e+09 4.005000e+09 2.930000e+08 6.900000e+07 3.000000e+08 3.491000e+09 3.484000e+09 NaN NaN NaN NaN 8.170000e+08 1.030000e+10 NaN NaN 4.770000e+09 8.950000e+08 NaN 1.650000e+08 1.779000e+09 NaN NaN NaN -6.640000e+08 NaN 3.521000e+09 NaN NaN NaN NaN -8.000000e+06 NaN 1.251000e+09 NaN NaN NaN 6.010000e+08 NaN NaN NaN NaN 1.155100e+10 NaN 8.170000e+08 NaN 2.398984e+10 NaN -3.491000e+09 NaN NaN NaN
128610 128610 AAPL.US 2004-09-30 2004-12-03 USD 8.050000e+09 4.200000e+07 NaN 4.400000e+08 2.974000e+09 5.076000e+09 NaN 1.229000e+09 2.514000e+09 2.670000e+09 2.940000e+08 8.000000e+07 1.896000e+08 2.969000e+09 2.680000e+09 NaN NaN NaN NaN 7.070000e+08 7.055000e+09 NaN NaN 2.495000e+09 7.740000e+08 NaN 1.010000e+08 1.451000e+09 NaN NaN NaN -1.500000e+07 NaN 2.514000e+09 NaN NaN NaN NaN -1.280000e+08 NaN 9.950000e+08 NaN NaN NaN 2.940000e+08 NaN NaN NaN NaN 8.050000e+09 NaN 7.070000e+08 NaN 2.168942e+10 NaN -2.969000e+09 NaN NaN NaN
128621 128621 AAPL.US 2002-09-30 2002-12-19 USD 6.298000e+09 3.400000e+07 NaN 4.410000e+08 2.203000e+09 4.095000e+09 NaN 7.470000e+08 1.826000e+09 2.325000e+09 NaN 8.500000e+07 1.700000e+08 2.252000e+09 1.658000e+09 NaN NaN 3.160000e+08 NaN 6.210000e+08 5.388000e+09 NaN NaN 2.085000e+09 5.650000e+08 3.160000e+08 4.500000e+07 9.110000e+08 NaN NaN NaN -5.600000e+07 NaN 1.826000e+09 NaN NaN NaN NaN -9.800000e+07 NaN 9.100000e+08 NaN NaN NaN 5.450000e+08 NaN NaN NaN NaN 6.298000e+09 NaN 6.210000e+08 NaN 2.025996e+10 NaN -1.936000e+09 NaN NaN NaN
128670 128670 AAPL.US 2001-09-30 2001-12-21 USD 6.021000e+09 1.000000e+07 NaN 3.300000e+08 2.101000e+09 3.920000e+09 NaN 7.170000e+08 1.693000e+09 2.260000e+09 NaN 6.600000e+07 3.140000e+08 2.310000e+09 1.518000e+09 NaN NaN 3.170000e+08 NaN 5.640000e+08 5.143000e+09 NaN NaN 2.026000e+09 4.660000e+08 3.170000e+08 1.100000e+07 8.010000e+08 NaN NaN NaN -3.300000e+07 NaN 1.693000e+09 NaN NaN NaN NaN -1.560000e+08 NaN 8.780000e+08 NaN NaN NaN 5.830000e+08 NaN NaN NaN NaN 6.021000e+09 NaN 5.640000e+08 NaN 1.935433e+10 NaN -1.993000e+09 NaN NaN NaN
128684 128684 AAPL.US 1999-09-30 1999-12-22 NaN 5.161000e+09 NaN NaN NaN 2.057000e+09 NaN NaN NaN NaN 1.499000e+09 NaN NaN NaN 1.326000e+09 1.549000e+09 NaN NaN 3.000000e+08 NaN NaN 4.285000e+09 NaN NaN 1.900000e+09 6.810000e+08 NaN 2.000000e+07 NaN NaN NaN NaN 1.060000e+08 NaN 1.349000e+09 NaN NaN NaN NaN 1.100000e+07 NaN 8.760000e+08 NaN NaN NaN 5.080000e+08 NaN NaN NaN NaN 5.161000e+09 NaN 3.180000e+08 NaN 1.950637e+10 NaN -1.026000e+09 NaN NaN NaN
128694 128694 AAPL.US 2000-09-30 2000-12-14 USD 6.803000e+09 NaN NaN 4.140000e+08 2.696000e+09 4.107000e+09 NaN 7.760000e+08 1.502000e+09 2.285000e+09 NaN NaN 1.063000e+09 1.191000e+09 1.933000e+09 NaN NaN 3.000000e+08 NaN 3.130000e+08 5.427000e+09 NaN NaN 2.836000e+09 9.530000e+08 3.000000e+08 3.300000e+07 1.157000e+09 NaN NaN NaN -3.870000e+08 NaN 1.502000e+09 76000000.0 NaN NaN NaN 1.063000e+09 NaN 1.376000e+09 NaN NaN NaN 7.630000e+08 NaN NaN NaN NaN 6.803000e+09 NaN 3.130000e+08 NaN 2.017814e+10 NaN -8.910000e+08 NaN NaN NaN
128698 128698 AAPL.US 1998-09-30 1998-09-25 NaN 4.289000e+09 NaN NaN NaN 2.647000e+09 NaN NaN NaN NaN 8.980000e+08 NaN NaN NaN 1.481000e+09 1.520000e+09 NaN NaN 9.540000e+08 NaN NaN 3.698000e+09 NaN NaN 8.190000e+08 9.550000e+08 NaN 7.800000e+07 NaN NaN NaN NaN -3.900000e+07 NaN 6.330000e+08 NaN NaN NaN NaN 7.000000e+07 NaN 5.910000e+08 NaN NaN NaN 1.127000e+09 NaN NaN NaN NaN 4.289000e+09 NaN 3.480000e+08 NaN 1.880670e+10 NaN -5.270000e+08 NaN NaN NaN
128713 128713 AAPL.US 1996-09-30 1996-12-19 NaN 5.364000e+09 NaN NaN NaN 3.306000e+09 NaN NaN NaN NaN 1.634000e+09 NaN NaN NaN 1.552000e+09 2.003000e+09 1.860000e+08 NaN 1.135000e+09 NaN NaN 4.515000e+09 NaN NaN 1.930000e+08 1.496000e+09 NaN 6.620000e+08 NaN NaN NaN NaN -3.000000e+07 NaN 4.390000e+08 NaN NaN NaN NaN -1.030000e+08 NaN 8.490000e+08 NaN NaN NaN 1.303000e+09 NaN NaN NaN NaN 5.364000e+09 NaN 5.980000e+08 NaN 1.385821e+10 NaN -4.170000e+08 NaN NaN NaN
128720 128720 AAPL.US 1994-09-30 1994-12-13 NaN 5.302746e+09 NaN NaN NaN 2.919445e+09 NaN NaN NaN NaN 2.096206e+09 NaN NaN NaN 1.203488e+09 1.944305e+09 2.922000e+08 NaN 5.962000e+08 NaN NaN 4.476452e+09 NaN NaN 5.436800e+07 1.581347e+09 NaN 1.088434e+09 NaN NaN NaN NaN -7.850880e+08 NaN 2.979290e+08 NaN NaN NaN NaN 1.591940e+08 NaN 8.262940e+08 NaN NaN NaN 9.751400e+08 NaN NaN NaN NaN 5.302746e+09 NaN 6.671000e+08 NaN 1.330672e+10 NaN -6.072880e+08 NaN NaN NaN
128748 128748 AAPL.US 1992-09-30 1992-09-30 NaN 4.223700e+09 NaN NaN NaN 2.036300e+09 NaN NaN NaN NaN 1.904500e+09 NaN NaN NaN 4.986000e+08 1.425500e+09 1.845000e+08 NaN 1.845000e+08 NaN NaN 3.558400e+09 NaN NaN NaN 1.087200e+09 NaN 5.801000e+08 NaN NaN NaN NaN -6.734000e+08 NaN NaN NaN NaN NaN NaN 2.031000e+08 NaN 6.653000e+08 NaN NaN NaN 6.108000e+08 NaN NaN NaN NaN 4.223700e+09 NaN 4.622000e+08 NaN 1.368774e+10 NaN -3.141000e+08 NaN NaN NaN
128753 128753 AAPL.US 1991-09-30 1991-09-30 NaN 3.493600e+09 NaN NaN NaN 1.726900e+09 NaN NaN NaN NaN 1.492000e+09 NaN NaN NaN 6.041000e+08 1.217100e+09 1.486000e+08 NaN 1.486000e+08 NaN NaN 2.863600e+09 NaN NaN NaN 9.072000e+08 NaN 6.717000e+08 NaN NaN NaN NaN -5.880000e+08 NaN NaN NaN NaN NaN NaN 1.820000e+08 NaN 6.300000e+08 NaN NaN NaN 5.098000e+08 NaN NaN NaN NaN 3.493600e+09 NaN 4.480000e+08 NaN 1.344868e+10 NaN -4.555000e+08 NaN NaN NaN
128765 128765 AAPL.US 1990-09-30 1990-09-30 NaN 2.975700e+09 NaN NaN NaN 1.528900e+09 NaN NaN NaN NaN 1.312200e+09 NaN NaN NaN 3.747000e+08 1.027000e+09 1.226000e+08 NaN 1.226000e+08 NaN NaN 2.403300e+09 NaN NaN NaN 7.619000e+08 NaN 3.555000e+08 NaN NaN NaN NaN -4.467000e+08 NaN NaN NaN NaN NaN NaN 1.742000e+08 NaN 5.724000e+08 NaN NaN NaN 5.019000e+08 NaN NaN NaN NaN 2.975700e+09 NaN 3.982000e+08 NaN 1.407111e+10 NaN -2.521000e+08 NaN NaN NaN
128805 128805 AAPL.US 1988-09-30 1988-09-30 NaN 2.082100e+09 NaN NaN NaN 1.078700e+09 NaN NaN NaN NaN 7.765000e+08 NaN NaN NaN 5.457000e+08 8.271000e+08 1.279000e+08 NaN 3.150000e+08 NaN NaN 1.783000e+09 NaN NaN NaN 6.388000e+08 NaN 4.615000e+08 NaN NaN NaN NaN -2.130000e+08 NaN NaN NaN NaN NaN NaN 9.170000e+07 NaN 2.991000e+08 NaN NaN NaN 2.516000e+08 NaN NaN NaN NaN 2.082100e+09 NaN 2.074000e+08 NaN 1.455636e+10 NaN -2.307000e+08 NaN NaN NaN
128810 128810 AAPL.US 1989-09-30 1989-09-30 NaN 2.743900e+09 NaN NaN NaN 1.258200e+09 NaN NaN NaN NaN 1.175900e+09 NaN NaN NaN 4.383000e+08 8.953000e+08 5.680000e+07 NaN 5.680000e+07 NaN NaN 2.294400e+09 NaN NaN NaN 7.928000e+08 NaN 4.754000e+08 NaN NaN NaN NaN -3.091000e+08 NaN NaN NaN NaN NaN NaN 1.153000e+08 NaN 4.495000e+08 NaN NaN NaN 3.629000e+08 NaN NaN NaN NaN 2.743900e+09 NaN 3.342000e+08 NaN 1.436384e+10 NaN -3.815000e+08 NaN NaN NaN
128846 128846 AAPL.US 1985-09-30 1985-09-30 NaN 9.362000e+08 NaN NaN NaN 3.857000e+08 NaN NaN NaN NaN 3.203000e+08 NaN NaN NaN 3.370000e+08 2.954000e+08 NaN NaN NaN NaN NaN 8.221000e+08 NaN NaN NaN 2.202000e+08 NaN 1.670000e+08 NaN NaN NaN NaN -8.520000e+07 NaN NaN NaN NaN NaN NaN 2.370000e+07 NaN 1.141000e+08 NaN NaN NaN 9.030000e+07 NaN NaN NaN NaN 9.362000e+08 NaN 9.040000e+07 NaN 1.370880e+10 NaN -3.370000e+08 NaN NaN NaN
145183 145183 AAPL.US 1993-09-30 1993-09-30 NaN 5.171400e+09 NaN NaN NaN 3.145000e+09 NaN NaN NaN NaN 1.842600e+09 NaN NaN NaN 6.764000e+08 2.515200e+09 8.232000e+08 NaN 8.232000e+08 NaN NaN 4.338400e+09 NaN NaN NaN 1.381900e+09 NaN 1.506600e+09 NaN NaN NaN NaN -7.531000e+08 NaN NaN NaN NaN NaN NaN 1.735000e+08 NaN 8.330000e+08 NaN NaN NaN 6.298000e+08 NaN NaN NaN NaN 5.171400e+09 NaN 6.595000e+08 NaN 1.310703e+10 NaN 1.468000e+08 NaN NaN NaN
193123 193123 AAPL.US 1986-09-30 1986-09-30 NaN 1.160100e+09 NaN NaN NaN 4.660000e+08 NaN NaN NaN NaN 4.743000e+08 NaN NaN NaN 5.762000e+08 3.285000e+08 NaN NaN NaN NaN NaN 1.040900e+09 NaN NaN NaN 2.631000e+08 NaN 1.087000e+08 NaN NaN NaN NaN -1.147000e+08 NaN NaN NaN NaN NaN NaN 1.190000e+07 NaN 1.192000e+08 NaN NaN NaN 1.375000e+08 NaN NaN NaN NaN 1.160100e+09 NaN 1.073000e+08 NaN 1.437333e+10 NaN -5.762000e+08 NaN NaN NaN
214345 214345 AAPL.US 1997-09-30 1997-12-05 NaN 4.233000e+09 NaN NaN NaN 3.033000e+09 NaN NaN NaN NaN 5.890000e+08 NaN NaN NaN 1.230000e+09 1.818000e+09 2.500000e+07 NaN 9.760000e+08 NaN NaN 3.424000e+09 NaN NaN 2.290000e+08 1.035000e+09 NaN 4.370000e+08 NaN NaN NaN NaN -7.400000e+07 NaN 4.980000e+08 NaN NaN NaN NaN 5.900000e+07 NaN 8.090000e+08 NaN NaN NaN 1.215000e+09 NaN NaN NaN NaN 4.233000e+09 NaN 4.860000e+08 NaN 1.411894e+10 NaN -2.540000e+08 NaN NaN NaN
219538 219538 AAPL.US 2020-09-30 2020-10-30 USD 3.238880e+11 NaN NaN 1.126400e+10 2.585490e+11 6.533900e+10 NaN 4.932700e+10 5.077900e+10 1.496600e+10 4.610800e+10 NaN 3.395200e+10 3.801600e+10 1.053920e+11 1.376900e+10 1.376900e+10 1.124360e+11 -4.060000e+08 4.533600e+10 1.437130e+11 1.008870e+11 6.533900e+10 5.292700e+10 3.744500e+10 9.866700e+10 4.061000e+09 4.229600e+10 NaN NaN NaN -4.060000e+08 NaN 5.077900e+10 NaN 1.496600e+10 NaN NaN 4.252200e+10 NaN 1.801750e+11 NaN 9.866700e+10 5.449000e+10 1.531570e+11 NaN NaN NaN NaN 3.238880e+11 9.094300e+10 3.676600e+10 NaN 1.752821e+10 3.832100e+10 7.442000e+10 1.777750e+11 NaN NaN
Then this dataframe:
financials_Income_Statement_yearly.loc[financials_Income_Statement_yearly.ticker == 'AAPL.US']
Unnamed: 0 ticker date filing_date currency_symbol researchdevelopment effectofaccountingcharges incomebeforetax minorityinterest netincome sellinggeneraladministrative grossprofit ebit nonoperatingincomenetother operatingincome otheroperatingexpenses interestexpense taxprovision interestincome netinterestincome extraordinaryitems nonrecurring otheritems incometaxexpense totalrevenue totaloperatingexpenses costofrevenue totalotherincomeexpensenet discontinuedoperations netincomefromcontinuingops netincomeapplicabletocommonshares preferredstockandotheradjustments sellingandmarketingexpenses reconcileddepreciation ebitda depreciationandamortization
21731 21731 AAPL.US 2000-09-30 2000-12-14 USD 3.800000e+08 NaN 1.092000e+09 NaN 7.860000e+08 1.166000e+09 2.166000e+09 1.113000e+09 NaN 6.200000e+08 7.363000e+09 2.100000e+07 NaN NaN NaN NaN NaN NaN 3.060000e+08 7.983000e+09 1.546000e+09 5.817000e+09 -4.720000e+08 NaN NaN 7.860000e+08 NaN NaN NaN 1.197000e+09 8.400000e+07
29898 29898 AAPL.US 2020-09-30 2020-10-30 USD 1.875200e+10 NaN 6.709100e+10 NaN 5.741100e+10 1.991600e+10 1.049560e+11 6.996400e+10 NaN 6.628800e+10 2.082270e+11 2.873000e+09 9.680000e+09 3.763000e+09 8.900000e+08 NaN NaN NaN 9.680000e+09 2.745150e+11 3.866800e+10 1.695590e+11 -8.030000e+08 NaN 5.741100e+10 5.741100e+10 NaN NaN 1.105600e+10 8.102000e+10 1.105600e+10
29924 29924 AAPL.US 2016-09-30 2016-10-26 USD 1.004500e+10 NaN 6.137200e+10 NaN 4.568700e+10 1.419400e+10 8.426300e+10 6.282800e+10 1.348000e+09 6.002400e+10 1.556150e+11 1.456000e+09 1.568500e+10 3.999000e+09 2.543000e+09 NaN NaN NaN 1.568500e+10 2.156390e+11 2.423900e+10 1.313760e+11 -1.348000e+09 NaN 4.568700e+10 4.568700e+10 NaN NaN NaN 7.333300e+10 1.050500e+10
29949 29949 AAPL.US 2012-09-30 2012-10-31 USD 3.381000e+09 NaN 5.576300e+10 NaN 4.173300e+10 1.004000e+10 6.866200e+10 5.576300e+10 5.220000e+08 5.524100e+10 1.012670e+11 0.000000e+00 NaN NaN NaN NaN NaN NaN 1.403000e+10 1.565080e+11 1.342100e+10 8.784600e+10 -5.220000e+08 NaN 4.173300e+10 4.173300e+10 NaN NaN NaN 5.904000e+10 3.277000e+09
29957 29957 AAPL.US 2005-09-30 2005-12-01 USD 5.340000e+08 NaN 1.815000e+09 NaN 1.335000e+09 1.859000e+09 4.043000e+09 1.815000e+09 NaN 1.650000e+09 1.228100e+10 NaN NaN NaN NaN NaN NaN NaN 4.800000e+08 1.393100e+10 2.393000e+09 9.888000e+09 -1.650000e+08 NaN NaN 1.335000e+09 NaN NaN NaN 1.994000e+09 1.790000e+08
29980 29980 AAPL.US 1992-09-30 1992-09-30 NaN NaN NaN 8.555000e+08 NaN 5.304000e+08 2.289400e+09 3.312300e+09 8.555000e+08 NaN 8.057000e+08 6.280800e+09 NaN NaN NaN NaN NaN NaN NaN 3.251000e+08 7.086500e+09 2.506600e+09 3.774200e+09 -4.980000e+07 NaN NaN NaN NaN NaN NaN 1.072700e+09 2.172000e+08
29990 29990 AAPL.US 1991-09-30 1991-09-30 NaN NaN NaN 4.997000e+08 NaN 3.098000e+08 2.547400e+09 3.199100e+09 4.997000e+08 NaN 4.473000e+08 5.861500e+09 NaN NaN NaN NaN NaN NaN NaN 1.899000e+08 6.308800e+09 2.751800e+09 3.109700e+09 -5.240000e+07 NaN NaN NaN NaN NaN NaN 7.041000e+08 2.044000e+08
30011 30011 AAPL.US 1985-09-30 1985-09-30 NaN NaN NaN 1.200000e+08 NaN 6.120000e+07 6.532000e+08 8.423000e+08 1.200000e+08 NaN 1.473000e+08 1.771000e+09 NaN NaN NaN NaN NaN NaN NaN 5.880000e+07 1.918300e+09 6.950000e+08 1.076000e+09 2.730000e+07 NaN NaN NaN NaN NaN NaN 1.618000e+08 4.180000e+07
97600 97600 AAPL.US 2019-09-30 2019-10-31 USD 1.621700e+10 NaN 6.573700e+10 NaN 5.525600e+10 1.824500e+10 9.839200e+10 6.931300e+10 1.807000e+09 6.393000e+10 1.962440e+11 3.576000e+09 1.048100e+10 4.961000e+09 1.385000e+09 NaN NaN NaN 1.048100e+10 2.601740e+11 3.446200e+10 1.617820e+11 -1.807000e+09 NaN 5.525600e+10 5.525600e+10 NaN NaN 1.254700e+10 8.186000e+10 1.254700e+10
97645 97645 AAPL.US 2017-09-30 2017-11-03 USD 1.158100e+10 NaN 6.408900e+10 NaN 4.835100e+10 1.526100e+10 8.818600e+10 6.641200e+10 2.745000e+09 6.134400e+10 1.678900e+11 2.323000e+09 1.573800e+10 5.201000e+09 2.878000e+09 NaN NaN NaN 1.573800e+10 2.292340e+11 2.684200e+10 1.410480e+11 -2.745000e+09 NaN 4.835100e+10 4.835100e+10 NaN NaN 1.015700e+10 7.656900e+10 1.015700e+10
97680 97680 AAPL.US 2015-09-30 2015-10-28 USD 8.067000e+09 NaN 7.251500e+10 NaN 5.339400e+10 1.432900e+10 9.362600e+10 7.324800e+10 1.285000e+09 7.123000e+10 1.624850e+11 7.330000e+08 1.912100e+10 NaN NaN NaN NaN NaN 1.912100e+10 2.337150e+11 2.239600e+10 1.400890e+11 -1.285000e+09 NaN 5.339400e+10 5.339400e+10 NaN NaN NaN 8.450500e+10 1.125700e+10
97709 97709 AAPL.US 2014-09-30 2014-10-27 USD 6.041000e+09 NaN 5.348300e+10 NaN 3.951000e+10 1.199300e+10 7.053700e+10 5.386700e+10 9.800000e+08 5.250300e+10 1.302920e+11 3.840000e+08 NaN NaN NaN NaN NaN NaN 1.397300e+10 1.827950e+11 1.803400e+10 1.122580e+11 -9.800000e+08 NaN 3.951000e+10 3.951000e+10 NaN NaN NaN 6.181300e+10 7.946000e+09
97728 97728 AAPL.US 2011-09-30 2011-10-26 USD 2.429000e+09 NaN 3.420500e+10 NaN 2.592200e+10 7.599000e+09 4.381800e+10 3.420500e+10 4.150000e+08 3.379000e+10 7.445900e+10 0.000000e+00 NaN NaN NaN NaN NaN NaN 8.283000e+09 1.082490e+11 1.002800e+10 6.443100e+10 -4.150000e+08 NaN 2.592200e+10 2.592200e+10 NaN NaN NaN 3.601900e+10 1.814000e+09
97750 97750 AAPL.US 2010-09-30 2010-10-27 USD 1.782000e+09 NaN 1.854000e+10 NaN 1.401300e+10 5.517000e+09 2.568400e+10 1.854000e+10 1.550000e+08 1.838500e+10 4.684000e+10 0.000000e+00 NaN NaN NaN NaN NaN NaN 4.527000e+09 6.522500e+10 7.299000e+09 3.954100e+10 -1.550000e+08 NaN 1.401300e+10 1.401300e+10 NaN NaN NaN 1.956700e+10 1.027000e+09
97778 97778 AAPL.US 2009-09-30 2009-10-27 USD 1.333000e+09 NaN 7.984000e+09 NaN 5.704000e+09 4.149000e+09 1.314000e+10 7.984000e+09 3.260000e+08 7.658000e+09 2.887900e+10 0.000000e+00 NaN NaN NaN NaN NaN NaN 2.280000e+09 3.653700e+10 5.482000e+09 2.339700e+10 -3.260000e+08 NaN 8.235000e+09 8.235000e+09 NaN NaN NaN 8.718000e+09 7.340000e+08
97785 97785 AAPL.US 2008-09-30 2008-11-05 USD 1.109000e+09 NaN 6.895000e+09 NaN 4.834000e+09 3.761000e+09 1.114500e+10 6.895000e+09 NaN 6.275000e+09 2.620400e+10 NaN NaN NaN NaN NaN NaN NaN 2.061000e+09 3.247900e+10 4.870000e+09 2.133400e+10 -6.200000e+08 NaN NaN 4.834000e+09 NaN NaN NaN 7.368000e+09 4.730000e+08
97808 97808 AAPL.US 2007-09-30 2007-11-15 USD 7.820000e+08 NaN 5.008000e+09 NaN 3.496000e+09 2.963000e+09 8.154000e+09 5.008000e+09 NaN 4.409000e+09 1.959700e+10 NaN NaN NaN NaN NaN NaN NaN 1.512000e+09 2.400600e+10 3.745000e+09 1.585200e+10 -5.990000e+08 NaN NaN 3.496000e+09 NaN NaN NaN 5.325000e+09 3.170000e+08
97833 97833 AAPL.US 2004-09-30 2004-12-03 USD 4.890000e+08 NaN 3.830000e+08 NaN 2.760000e+08 1.421000e+09 2.259000e+09 3.860000e+08 NaN 3.490000e+08 7.930000e+09 3.000000e+06 NaN NaN NaN NaN NaN NaN 1.070000e+08 8.279000e+09 1.910000e+09 6.020000e+09 -3.400000e+07 NaN NaN 2.760000e+08 NaN NaN NaN 5.360000e+08 1.500000e+08
97844 97844 AAPL.US 2003-09-30 2003-12-19 USD 4.710000e+08 NaN 9.200000e+07 NaN 6.900000e+07 1.212000e+09 1.708000e+09 1.010000e+08 NaN 2.500000e+07 6.182000e+09 8.000000e+06 NaN NaN NaN 1.000000e+06 NaN NaN 2.400000e+07 6.207000e+09 1.683000e+09 4.499000e+09 -6.700000e+07 NaN NaN 6.800000e+07 NaN NaN NaN 2.140000e+08 1.130000e+08
97866 97866 AAPL.US 2002-09-30 2002-12-19 USD 4.470000e+08 NaN 8.700000e+07 NaN 6.500000e+07 1.111000e+09 1.603000e+09 9.800000e+07 NaN 4.500000e+07 5.697000e+09 1.100000e+07 NaN NaN NaN NaN NaN NaN 2.200000e+07 5.742000e+09 1.558000e+09 4.139000e+09 -4.200000e+07 NaN NaN 6.500000e+07 NaN NaN NaN 2.120000e+08 1.140000e+08
97876 97876 AAPL.US 2001-09-30 2001-12-21 USD 4.410000e+08 NaN -5.200000e+07 NaN -2.500000e+07 1.138000e+09 1.235000e+09 -2.400000e+07 NaN -3.440000e+08 5.707000e+09 1.600000e+07 NaN NaN NaN 1.200000e+07 NaN NaN -1.500000e+07 5.363000e+09 1.579000e+09 4.128000e+09 -2.920000e+08 NaN NaN NaN NaN NaN NaN 7.600000e+07 1.000000e+08
97903 97903 AAPL.US 1999-09-30 1999-12-22 NaN 3.140000e+08 NaN 6.760000e+08 NaN 6.010000e+08 9.960000e+08 1.696000e+09 7.230000e+08 NaN 3.860000e+08 5.748000e+09 4.700000e+07 NaN NaN NaN NaN NaN NaN 7.500000e+07 6.134000e+09 1.310000e+09 4.438000e+09 -2.900000e+08 NaN NaN NaN NaN NaN NaN 8.080000e+08 8.500000e+07
97910 97910 AAPL.US 1998-09-30 1998-09-25 NaN 3.100000e+08 NaN 3.290000e+08 NaN 3.090000e+08 9.080000e+08 1.479000e+09 3.910000e+08 NaN 2.610000e+08 5.680000e+09 6.200000e+07 NaN NaN NaN NaN NaN NaN 2.000000e+07 5.941000e+09 1.218000e+09 4.462000e+09 -6.800000e+07 NaN NaN NaN NaN NaN NaN 5.020000e+08 1.110000e+08
97935 97935 AAPL.US 1996-09-30 1996-12-19 NaN 6.040000e+08 NaN -1.295000e+09 NaN -8.160000e+08 1.568000e+09 9.680000e+08 -1.235000e+09 NaN -1.204000e+09 1.103700e+10 6.000000e+07 NaN NaN NaN NaN NaN NaN -4.790000e+08 9.833000e+09 2.172000e+09 8.865000e+09 9.100000e+07 NaN NaN NaN NaN NaN NaN -1.079000e+09 1.560000e+08
97942 97942 AAPL.US 1995-09-30 1995-12-19 NaN 6.140000e+08 NaN 6.740000e+08 NaN 4.240000e+08 1.583000e+09 2.858000e+09 7.220000e+08 NaN 6.610000e+08 1.040100e+10 4.800000e+07 NaN NaN NaN NaN NaN NaN 2.500000e+08 1.106200e+10 2.197000e+09 8.204000e+09 -1.300000e+07 NaN NaN NaN NaN NaN NaN 8.490000e+08 1.270000e+08
97951 97951 AAPL.US 1994-09-30 1994-12-13 NaN 5.643030e+08 NaN 5.002860e+08 NaN 3.101780e+08 1.384111e+09 2.343833e+09 5.399390e+08 NaN 3.954190e+08 8.793329e+09 3.965300e+07 NaN NaN NaN NaN NaN NaN 1.901080e+08 9.188748e+09 1.948414e+09 6.844915e+09 -1.048670e+08 NaN NaN NaN NaN NaN NaN 7.078970e+08 1.679580e+08
97971 97971 AAPL.US 1993-09-30 1993-09-30 NaN NaN NaN 1.397000e+08 NaN 8.660000e+07 2.617800e+09 2.894300e+09 1.397000e+08 NaN 1.104000e+08 7.866600e+09 NaN NaN NaN NaN NaN NaN NaN 5.310000e+07 7.977000e+09 2.783900e+09 5.082700e+09 -2.930000e+07 NaN NaN NaN NaN NaN NaN 3.058000e+08 1.661000e+08
98003 98003 AAPL.US 1990-09-30 1990-09-30 NaN NaN NaN 7.785000e+08 NaN 4.749000e+08 2.240200e+09 3.154900e+09 7.785000e+08 NaN 7.120000e+08 4.846400e+09 NaN NaN NaN NaN NaN NaN NaN 3.036000e+08 5.558400e+09 2.442900e+09 2.403500e+09 -6.650000e+07 NaN NaN NaN NaN NaN NaN 9.812000e+08 2.027000e+08
98013 98013 AAPL.US 1989-09-30 1989-09-30 NaN NaN NaN 7.443000e+08 NaN 4.540000e+08 1.954900e+09 2.714000e+09 7.443000e+08 NaN 6.343000e+08 4.649700e+09 NaN NaN NaN NaN NaN NaN NaN 2.903000e+08 5.284000e+09 2.079700e+09 2.570000e+09 -1.100000e+08 NaN NaN NaN NaN NaN NaN 8.691000e+08 1.248000e+08
98036 98036 AAPL.US 1987-09-30 1987-09-30 NaN NaN NaN 4.104000e+08 NaN 2.175000e+08 9.934000e+08 1.435400e+09 4.104000e+08 NaN 3.715000e+08 2.289600e+09 NaN NaN NaN NaN NaN NaN NaN 1.929000e+08 2.661100e+09 1.063900e+09 1.225700e+09 -3.890000e+07 NaN NaN NaN NaN NaN NaN 4.809000e+08 7.050000e+07
98047 98047 AAPL.US 1986-09-30 1986-09-30 NaN NaN NaN 3.098000e+08 NaN 1.540000e+08 7.373000e+08 1.061900e+09 3.098000e+08 NaN 2.735000e+08 1.628400e+09 NaN NaN NaN NaN NaN NaN NaN 1.558000e+08 1.901900e+09 7.884000e+08 8.400000e+08 -3.630000e+07 NaN NaN NaN NaN NaN NaN 3.609000e+08 5.110000e+07
If I try to merge it:
var = pd.concat([financials_Balance_Sheet_yearly, financials_Income_Statement_yearly], axis=1)
var = var.loc[var['ticker'] == 'AAPL.US']
var
I get this error:
ValueError: Cannot index with multidimensional key
When I tried merge, I got empty cells.
Basically ticker and date should be the keys to map all the other columns. If they don't match, then. it should keep the data and I'll assess the problem/clean it up.
How can I do this?
I think the columns 'ticker' and 'date' present in both DataFrames are causing both the 'ticker' and 'date' columns to become multidimensional when you concatenate the DataFrames together.
When I run your original code, this is what var['ticker'] looks like (and var['date'] looks similar):
>>> var['ticker']
ticker ticker
0 AAPL.US AAPL.US
1 AAPL.US AAPL.US
2 AAPL.US AAPL.US
3 AAPL.US AAPL.US
4 AAPL.US AAPL.US
5 AAPL.US AAPL.US
6 AAPL.US AAPL.US
7 AAPL.US AAPL.US
8 AAPL.US AAPL.US
9 AAPL.US AAPL.US
10 AAPL.US AAPL.US
11 AAPL.US AAPL.US
12 AAPL.US AAPL.US
13 AAPL.US AAPL.US
14 AAPL.US AAPL.US
15 AAPL.US AAPL.US
16 AAPL.US AAPL.US
17 AAPL.US AAPL.US
18 AAPL.US AAPL.US
19 AAPL.US AAPL.US
20 AAPL.US AAPL.US
21 AAPL.US AAPL.US
22 AAPL.US AAPL.US
23 AAPL.US AAPL.US
24 AAPL.US AAPL.US
25 AAPL.US AAPL.US
26 AAPL.US AAPL.US
27 AAPL.US AAPL.US
28 AAPL.US AAPL.US
29 AAPL.US AAPL.US
30 NaN AAPL.US
One solution could be to set the ticker and date columns to the be index before concatenating the DataFrames, then reset the index:
pd.concat([df1.set_index(['ticker','date']),df2.set_index(['ticker','date'])],axis=1).reset_index()
ticker date Unnamed: 0 filing_date currency_symbol ... netincomeapplicabletocommonshares preferredstockandotheradjustments sellingandmarketingexpenses reconcileddepreciation ebitda depreciationandamortization
0 AAPL.US 1985-09-30 128846.0 128846.0 1985-09-30 NaN ... NaN NaN NaN NaN 1.618000e+08 4.180000e+07
1 AAPL.US 1986-09-30 193123.0 193123.0 1986-09-30 NaN ... NaN NaN NaN NaN 3.609000e+08 5.110000e+07
2 AAPL.US 1987-09-30 NaN NaN NaN NaN ... NaN NaN NaN NaN 4.809000e+08 7.050000e+07
3 AAPL.US 1988-09-30 128805.0 128805.0 1988-09-30 NaN ... NaN NaN NaN NaN NaN NaN
4 AAPL.US 1989-09-30 128810.0 128810.0 1989-09-30 NaN ... NaN NaN NaN NaN 8.691000e+08 1.248000e+08
5 AAPL.US 1990-09-30 128765.0 128765.0 1990-09-30 NaN ... NaN NaN NaN NaN 9.812000e+08 2.027000e+08
6 AAPL.US 1991-09-30 128753.0 128753.0 1991-09-30 NaN ... NaN NaN NaN NaN 7.041000e+08 2.044000e+08
7 AAPL.US 1992-09-30 128748.0 128748.0 1992-09-30 NaN ... NaN NaN NaN NaN 1.072700e+09 2.172000e+08
8 AAPL.US 1993-09-30 145183.0 145183.0 1993-09-30 NaN ... NaN NaN NaN NaN 3.058000e+08 1.661000e+08
9 AAPL.US 1994-09-30 128720.0 128720.0 1994-12-13 NaN ... NaN NaN NaN NaN 7.078970e+08 1.679580e+08
10 AAPL.US 1995-09-30 NaN NaN NaN NaN ... NaN NaN NaN NaN 8.490000e+08 1.270000e+08
11 AAPL.US 1996-09-30 128713.0 128713.0 1996-12-19 NaN ... NaN NaN NaN NaN -1.079000e+09 1.560000e+08
12 AAPL.US 1997-09-30 214345.0 214345.0 1997-12-05 NaN ... NaN NaN NaN NaN NaN NaN
13 AAPL.US 1998-09-30 128698.0 128698.0 1998-09-25 NaN ... NaN NaN NaN NaN 5.020000e+08 1.110000e+08
14 AAPL.US 1999-09-30 128684.0 128684.0 1999-12-22 NaN ... NaN NaN NaN NaN 8.080000e+08 8.500000e+07
15 AAPL.US 2000-09-30 128694.0 128694.0 2000-12-14 USD ... 7.860000e+08 NaN NaN NaN 1.197000e+09 8.400000e+07
16 AAPL.US 2001-09-30 128670.0 128670.0 2001-12-21 USD ... NaN NaN NaN NaN 7.600000e+07 1.000000e+08
17 AAPL.US 2002-09-30 128621.0 128621.0 2002-12-19 USD ... 6.500000e+07 NaN NaN NaN 2.120000e+08 1.140000e+08
18 AAPL.US 2003-09-30 NaN NaN NaN NaN ... 6.800000e+07 NaN NaN NaN 2.140000e+08 1.130000e+08
19 AAPL.US 2004-09-30 128610.0 128610.0 2004-12-03 USD ... 2.760000e+08 NaN NaN NaN 5.360000e+08 1.500000e+08
20 AAPL.US 2005-09-30 128588.0 128588.0 2005-12-01 USD ... 1.335000e+09 NaN NaN NaN 1.994000e+09 1.790000e+08
21 AAPL.US 2006-09-30 128581.0 128581.0 2006-12-29 USD ... NaN NaN NaN NaN NaN NaN
22 AAPL.US 2007-09-30 NaN NaN NaN NaN ... 3.496000e+09 NaN NaN NaN 5.325000e+09 3.170000e+08
23 AAPL.US 2008-09-30 128550.0 128550.0 2008-11-05 USD ... 4.834000e+09 NaN NaN NaN 7.368000e+09 4.730000e+08
24 AAPL.US 2009-09-30 NaN NaN NaN NaN ... 8.235000e+09 NaN NaN NaN 8.718000e+09 7.340000e+08
25 AAPL.US 2010-09-30 128514.0 128514.0 2010-10-27 USD ... 1.401300e+10 NaN NaN NaN 1.956700e+10 1.027000e+09
26 AAPL.US 2011-09-30 128453.0 128453.0 2011-10-26 USD ... 2.592200e+10 NaN NaN NaN 3.601900e+10 1.814000e+09
27 AAPL.US 2012-09-30 128450.0 128450.0 2012-10-31 USD ... 4.173300e+10 NaN NaN NaN 5.904000e+10 3.277000e+09
28 AAPL.US 2013-09-30 128413.0 128413.0 2013-10-30 USD ... NaN NaN NaN NaN NaN NaN
29 AAPL.US 2014-09-30 128386.0 128386.0 2014-10-27 USD ... 3.951000e+10 NaN NaN NaN 6.181300e+10 7.946000e+09
30 AAPL.US 2015-09-30 NaN NaN NaN NaN ... 5.339400e+10 NaN NaN NaN 8.450500e+10 1.125700e+10
31 AAPL.US 2016-09-30 128337.0 128337.0 2016-10-26 USD ... 4.568700e+10 NaN NaN NaN 7.333300e+10 1.050500e+10
32 AAPL.US 2017-09-30 128311.0 128311.0 2017-11-03 USD ... 4.835100e+10 NaN NaN 1.015700e+10 7.656900e+10 1.015700e+10
33 AAPL.US 2018-09-30 128288.0 128288.0 2018-11-05 USD ... NaN NaN NaN NaN NaN NaN
34 AAPL.US 2019-09-30 128270.0 128270.0 2019-10-31 USD ... 5.525600e+10 NaN NaN 1.254700e+10 8.186000e+10 1.254700e+10
35 AAPL.US 2020-09-30 219538.0 219538.0 2020-10-30 USD ... 5.741100e+10 NaN NaN 1.105600e+10 8.102000e+10 1.105600e+10
[36 rows x 100 columns]
My dataset has 12 columns, X1-X6 and Y1-Y6. The variables X and Y match to each other - the first record means: 80 parts of A, 10 parts of C, 2 parts of J and 8 parts of K (each row has 100 total).
I would like to be able to transform my dataset into a dataset in which the entries in columns X1-X6 are now the headers. See before and after datasets below.
My dataset (before):
X1 X2 X3 X4 X5 X6 Y1 Y2 Y3 Y4 Y5 Y6
0 A C J K NaN NaN 80.0 10.0 2.0 8.0 NaN NaN
1 F N O NaN NaN NaN 2.0 25.0 73.0 NaN NaN NaN
2 A H J M NaN NaN 70.0 6.0 15.0 9.0 NaN NaN
3 B I K P NaN NaN 0.5 1.5 2.0 96.0 NaN NaN
4 A B F H O P 83.0 4.0 9.0 2.0 1.0 1.0
5 A B F G NaN NaN 1.0 16.0 9.0 74.0 NaN NaN
6 A B D F L NaN 95.0 2.0 1.0 1.0 1.0 NaN
7 B F H P NaN NaN 0.2 0.4 0.4 99.0 NaN NaN
8 A D F L NaN NaN 35.0 12.0 30.0 23.0 NaN NaN
9 A B F I O NaN 95.0 0.3 0.1 1.6 3.0 NaN
10 B E G NaN NaN NaN 10.0 31.0 59.0 NaN NaN NaN
11 A F G L NaN NaN 24.0 6.0 67.0 3.0 NaN NaN
12 A C I NaN NaN NaN 65.0 30.0 5.0 NaN NaN NaN
13 A F G L NaN NaN 55.0 6.0 4.0 35.0 NaN NaN
14 A F J K L NaN 22.0 3.0 12.0 0.8 62.2 NaN
15 B F I P NaN NaN 0.6 1.2 0.2 98.0 NaN NaN
16 A B F H O NaN 27.0 6.0 46.0 13.0 8.0 NaN
The dataset I'd like to transform to:
A B C D E F G H I J K L M \
0 80.0 NaN 10.0 NaN NaN NaN NaN NaN NaN 2.0 8.0 NaN NaN
1 NaN NaN NaN NaN NaN 2.0 NaN NaN NaN NaN NaN NaN NaN
2 70.0 NaN NaN NaN NaN NaN NaN 6.0 NaN 15.0 NaN NaN 9.0
3 NaN 0.5 NaN NaN NaN NaN NaN NaN 1.5 NaN 2.0 NaN NaN
4 83.0 4.0 NaN NaN NaN 9.0 NaN 2.0 NaN NaN NaN NaN NaN
5 1.0 16.0 NaN NaN NaN 9.0 74.0 NaN NaN NaN NaN NaN NaN
6 95.0 2.0 NaN 1.0 NaN 1.0 NaN NaN NaN NaN NaN 1.0 NaN
7 NaN 0.2 NaN NaN NaN 0.4 NaN 0.4 NaN NaN NaN NaN NaN
8 35.0 NaN NaN 12.0 NaN 30.0 NaN NaN NaN NaN NaN 23.0 NaN
9 95.0 0.3 NaN NaN NaN 0.1 NaN NaN 1.6 NaN NaN NaN NaN
10 NaN 10.0 NaN NaN 31.0 NaN 59.0 NaN NaN NaN NaN NaN NaN
11 24.0 NaN NaN NaN NaN 6.0 67.0 NaN NaN NaN NaN 3.0 NaN
12 65.0 NaN 30.0 NaN NaN NaN NaN NaN 5.0 NaN NaN NaN NaN
13 55.0 NaN NaN NaN NaN 6.0 4.0 NaN NaN NaN NaN 35.0 NaN
14 22.0 NaN NaN NaN NaN 3.0 NaN NaN NaN 12.0 0.8 62.2 NaN
15 NaN 0.6 NaN NaN NaN 1.2 NaN NaN 0.2 NaN NaN NaN NaN
16 27.0 6.0 NaN NaN NaN 46.0 NaN 13.0 NaN NaN NaN NaN NaN
N O P
0 NaN NaN NaN
1 25.0 73.0 NaN
2 NaN NaN NaN
3 NaN NaN 96.0
4 NaN 1.0 1.0
5 NaN NaN NaN
6 NaN NaN NaN
7 NaN NaN 99.0
8 NaN NaN NaN
9 NaN 3.0 NaN
10 NaN NaN NaN
11 NaN NaN NaN
12 NaN NaN NaN
13 NaN NaN NaN
14 NaN NaN NaN
15 NaN NaN 98.0
16 NaN 8.0 NaN
As you know that you want the Xi part to contain the column names for the new dataframe, while the Yi part would be the value, it is enough to change every line in a dict where Xi is the key and Yi the value. Then you use the list of that dictionnaries to feed the new dataframe:
data = list(df.apply(lambda x: {x['X'+ str(i)]: x['Y'+str(i)] for i in range(1,7)
if x['X'+str(i)]!= 'NaN'}, axis=1))
resul = pd.DataFrame(data)
print(resul)
gives:
A B C D E F ... K L M N O P
0 80.0 NaN 10.0 NaN NaN NaN ... 8.0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN 2.0 ... NaN NaN NaN 25.0 73.0 NaN
2 70.0 NaN NaN NaN NaN NaN ... NaN NaN 9.0 NaN NaN NaN
3 NaN 0.5 NaN NaN NaN NaN ... 2.0 NaN NaN NaN NaN 96.0
4 83.0 4.0 NaN NaN NaN 9.0 ... NaN NaN NaN NaN 1.0 1.0
5 1.0 16.0 NaN NaN NaN 9.0 ... NaN NaN NaN NaN NaN NaN
6 95.0 2.0 NaN 1.0 NaN 1.0 ... NaN 1.0 NaN NaN NaN NaN
7 NaN 0.2 NaN NaN NaN 0.4 ... NaN NaN NaN NaN NaN 99.0
8 35.0 NaN NaN 12.0 NaN 30.0 ... NaN 23.0 NaN NaN NaN NaN
9 95.0 0.3 NaN NaN NaN 0.1 ... NaN NaN NaN NaN 3.0 NaN
10 NaN 10.0 NaN NaN 31.0 NaN ... NaN NaN NaN NaN NaN NaN
11 24.0 NaN NaN NaN NaN 6.0 ... NaN 3.0 NaN NaN NaN NaN
12 65.0 NaN 30.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
13 55.0 NaN NaN NaN NaN 6.0 ... NaN 35.0 NaN NaN NaN NaN
14 22.0 NaN NaN NaN NaN 3.0 ... 0.8 62.2 NaN NaN NaN NaN
15 NaN 0.6 NaN NaN NaN 1.2 ... NaN NaN NaN NaN NaN 98.0
16 27.0 6.0 NaN NaN NaN 46.0 ... NaN NaN NaN NaN 8.0 NaN
[17 rows x 16 columns]
One way to handle this. Loop through each row, splitting the dataframe in half using iloc. Then build a new dictionary using zip, then create a resulting dataframe.
df_dict = {x: list(zip(df.iloc[x,0:6], df.iloc[x,6:12])) for x in range(df.shape[0])}
df1 = pd.DataFrame.from_dict(pd_dict, orient='index')
df1.sort_index(1)
A B C F H I J K M N O P nan
0 80.0 NaN 10.0 NaN NaN NaN 2.0 8.0 NaN NaN NaN NaN NaN
1 NaN NaN NaN 2.0 NaN NaN NaN NaN NaN 25.0 73.0 NaN NaN
2 70.0 NaN NaN NaN 6.0 NaN 15.0 NaN 9.0 NaN NaN NaN NaN
3 NaN 0.5 NaN NaN NaN 1.5 NaN 2.0 NaN NaN NaN 96. NaN
4 83.0 4.0 NaN 9.0 2.0 NaN NaN NaN NaN NaN 1.0 1.0 NaN
I have a JSON output which I am trying to get in excel.
What I am trying to do is match the WEIGHT as column Header.
I could get this output using some loops.
What I am trying to get is have all the Weights as the first column header and if it has values paste it in else NaN.
Desired Output:
page = requests.get(mainurl)
data = json.loads(page.text)
for i in data['categories']:
for j in i['items']:
if a == 1: # so changes and appends keys per category (highlighted)
a=2 # so not true in this loop
s=tuple(j['prices'].keys())
ws.append(s)
PVAL=list(j['prices'].values())
ws.append(PVAL)# append the value
a=1 # makes true next category
p= []
for i in price: # I know this is absolute madness but dicts were getting sorted
i = str(i).replace("'",'').replace('{','').replace('}','')# get price values
p.append(i)
###apppend in excel
Note : As you can tell by the above code, I am a complete Beginner. And the above code could have been pretty with 2-3 lines of Pandas :(
I am now tinkering with Pandas to do it since I think it will be faster and better.
JsonOutput
MAJOR EDIT:
So I didn't have much time so I did this:
for i in data['categories']:
for j in i['items']:
PVAL=j['prices']
try:
ounce = PVAL['ounce']
except:
ounce = 'NaN'
try:
gram = PVAL['gram']
except:gram = 'NaN'
try:
twograms = PVAL['two_grams']
except:twograms='NaN'
try:
quarter=PVAL['quarter']
except:quarter='NaN'
try:
eighth=PVAL['eighth']
except:eighth='NaN'
try:
halfO=PVAL['half_ounce']
except:halfO='NaN'
try:
unit = PVAL['unit']
except:unit='NaN'
try:
halfgram = PVAL['half_gram']
except:halfgram='NaN'
name= j['name']
cat = j['category_name']
listname = j['listing_name']
namel.append(name)
catl.append(cat)
listnamel.append(listname)
halfOl.append(halfO)
halfgraml.append(halfgram)
unitl.append(unit)
eighthl.append(eighth)
twogramsl.append(twograms)
quarterl.append(quarter)
ouncel.append(ounce)
graml.append(gram)
Then these lists are appended in Excel.
I know it is not Pythonic but I am still trying to findout a good way to do it in Pandas.
as my rep is still low, cannot post any comment yet, thus will just post it here and will edit this if further clarifications are provided.
I don't see any WEIGHTs in the desired output. If I understand the json file correctly, you are iterating prices given a weight unit. Is the expected output to loop over each item and iterate over prices per weight unit. Put NaN if weight unit is not available. Is there a list of possible weight units?
Pandas also has read_json function and thus can directly load this to a Pandas dataframe.
-- edited ---
Apologies for the delay. Please see below answer
import pandas as pd
import json
from cytoolz.dicttoolz import merge
#replace below with your json loader
with open('sample.json') as json_dta:
dict_dta = json.load(json_dta)
list_columns = ['id', 'name', 'category_name', 'ounce', 'gram', 'two_grams', 'quarter', 'eighth','half_ounce','unit','half_gram']
df = pd.io.json.json_normalize(dict_dta, ['categories', ['items']]).pipe(lambda x: x.drop('prices', 1).join(x.prices.apply(lambda y: pd.Series(merge(y)))))[list_columns]
Above will result to:
id name category_name ounce gram two_grams quarter eighth half_ounce unit half_gram
0 10501503 Recon Indica 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
1 11614583 Kush Dawg Indica 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
2 8602219 OG Kush Indica 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
3 11448858 Poison OG Outdoor Sativa 69.0 9.0 0.0 40.0 25.0 50.0 NaN NaN
4 11731126 SunBurn 2.0 Outdoor Sativa 69.0 0.0 0.0 0.0 0.0 0.0 NaN NaN
5 6412418 Poison OG Sativa 99.0 9.0 18.0 40.0 25.0 70.0 NaN NaN
6 8982466 Sativa Trim Sativa 30.0 0.0 0.0 0.0 0.0 15.0 NaN NaN
7 11545434 Chupacabra Outdoor Hybrid 69.0 9.0 0.0 40.0 25.0 50.0 NaN NaN
8 11458944 Platinum Girl Scout Cookies Outdoor Hybrid 69.0 9.0 0.0 40.0 25.0 50.0 NaN NaN
9 11296163 Bubblegum Hybrid 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
10 11614623 C4 Hybrid 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
11 11333124 Chem Dawg Outdoor Hybrid 69.0 9.0 0.0 40.0 25.0 50.0 NaN NaN
12 11458988 Candy Kush Hybrid 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
13 10501592 Candy Kush Outdoor Hybrid 69.0 9.0 0.0 40.0 25.0 50.0 NaN NaN
14 9123804 ZOOTROCKS LemonGrass Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
15 9412336 Cherry Limeade 100mg Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
16 4970503 Peanut Budda Buddha, 100mg REC Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
17 9412238 Golden Strawberry Puck 100mg REC - CO Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
18 9412232 Cherry Puck 100mg REC - CO Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
19 9412228 Assorted Sour Pucks 100mg REC - CO Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
20 6454686 Assorted Fruity Pucks 100mg REC - CO Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
21 9412295 Sour Gummies Sativa 100mg, Recreational Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
22 7494303 Cheeba Chews Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
23 9411974 Mile High Mint, 100mg REC Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
24 9411972 Boulder Bar, 100mg Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
25 9412286 Sour Gummies Indica 100mg, Recreational Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
26 9412242 Watermelon Puck 100mg - REC Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
27 10066310 Coffee & Doughnuts Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
28 10065124 Wildflower Honey Edible NaN NaN NaN NaN NaN NaN 24.0 NaN
29 10064962 Clover Honey Edible NaN NaN NaN NaN NaN NaN 24.0 NaN
30 9412290 Sour Gummies Peach 100mg, Recreational Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
31 5926966 Stratos 100mg Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
32 10066271 Salt & Nibs Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
33 10065225 Yampa Valley Honey Edible NaN NaN NaN NaN NaN NaN 24.0 NaN
34 9412873 Fruit Punch Mints 100mg Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
35 9412251 Sour Gummies Hybrid 100mg, Recreational Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
36 9412922 Dutch Girl Carmel Waffle, 100mg Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
37 6790292 Hybrid Distillate Jar Concentrate NaN 36.0 0.0 NaN NaN NaN NaN 0.0
38 6379060 Hybrid Cartridge Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 18.0
39 9009149 Pure Cannabis Oil Hybrid Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 0.0
40 9400145 Pure Cannabis Oil Sativa Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 0.0
41 9409961 Sativa Cartridge Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 18.0
42 9400121 Pure Cannabis Oil Indica Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 0.0
43 9409954 Indica Cartridge Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 18.0
44 9400467 Indica Distillate Jar Concentrate NaN 36.0 0.0 NaN NaN NaN NaN 0.0
45 9691836 PWO Wax by Mahatma Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 0.0
46 9409970 Sativa Distillate Jar Concentrate NaN 36.0 0.0 NaN NaN NaN NaN 0.0
47 6134675 Bongs Gear NaN NaN NaN NaN NaN NaN 40.0 NaN
48 5993354 Small Glass Pipes Gear NaN NaN NaN NaN NaN NaN 10.0 NaN
49 4393434 Large Glass Pipes Gear NaN NaN NaN NaN NaN NaN 20.0 NaN
50 5941409 Pain Relief Salve, 2oz Topicals NaN NaN NaN NaN NaN NaN 26.0 NaN
51 8768835 THC Pain Stick Topicals NaN NaN NaN NaN NaN NaN 20.0 NaN
52 6370279 FORIA Pleasure (30ml) Spray Bottle Topicals NaN NaN NaN NaN NaN NaN 55.0 NaN
53 8911546 Bath Soak Topicals NaN NaN NaN NaN NaN NaN 20.0 NaN
54 9123854 FORIA Relief (2-pack) Suppositories Topicals NaN NaN NaN NaN NaN NaN 24.0 NaN
55 4187102 1 Gram Strain Specific-Prerolls Preroll NaN NaN NaN NaN NaN NaN 9.0 NaN
I need to merge similar columns and remove duplicates (entries with the same date). The data frame:
Albumin C-reactive protein CRP Ferritin Haemoglobin Hb Iron Nancy Index Plasma Platelets Transferrin saturation % Transferrin saturations UCEIS (0 to 8) WCC White Cell Count test_date
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 12.35 2016-04-17 23:00:00
1 NaN NaN NaN NaN 133.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2016-04-17 23:00:00
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN 406.0 NaN NaN NaN NaN NaN 2016-04-17 23:00:00
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN 406.0 NaN NaN NaN NaN NaN 2016-04-17 23:00:00
4 NaN 32.2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2016-04-17 23:00:00
5 36.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2016-04-17 23:00:00
6 NaN NaN NaN 99.7 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2016-04-17 23:00:00
7 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 25.0 NaN NaN NaN NaN 2016-04-17 23:00:00
12 36.0 NaN 32.2 99.7 NaN 133.0 NaN NaN NaN 406.0 NaN 25.0 NaN 12.35 NaN 2016-04-17 23:00:00
14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 7.0 NaN NaN 2016-04-25 23:00:00
79 34.0 NaN 5.4 55.9 NaN 133.0 NaN NaN NaN 372.0 NaN 28.0 NaN 7.99 NaN 2016-06-12 23:00:00
I need to get:
Albumin CRP Ferritin Hb Nancy Index Plasma Platelets Transferrin saturations UCEIS (0 to 8) WCC test_date
12 36.0 32.2 99.7 133.0 NaN NaN 406.0 25.0 NaN 12.35 2016-04-17 23:00:00
14 NaN NaN NaN NaN NaN NaN NaN NaN 7.0 NaN 2016-04-25 23:00:00
79 34.0 5.4 55.9 133.0 NaN NaN 372.0 28.0 NaN 7.99 2016-06-12 23:00:00
So, columns 'C-reactive protein' should be merged with 'CRP', 'Hemoglobin' with 'Hb', 'Transferrin saturation %' with 'Transferrin saturation'.
I can easily remove duplicates with .drop_duplicates(), but the trick is remove not only row with the same date, but also to make sure, that the values in the same column are duplicated. For example, 'C-reactive protein' at row '4' has the same values as 'CRP' in row '12', in addition, they both have the same entry date. Given all that, I need to have only 'CRP' column with values 32.2 and the date '2016-04-17' (plus other unique columns).
EDIT
Some entries are really duplicates (absolutely identical, due to system glitches), for example (last three rows, on 2016-06-20, indices '803' and '122'). Is the solution below capable of removing such identical rows?
P.S. Thanks for the amazing and general solution for duplicate, but not identical entries.
Albumin C-reactive protein CRP Ferritin Haemoglobin Hb Iron Nancy Index Plasma Platelets Transferrin saturation % Transferrin saturations UCEIS (0 to 8) WCC White Cell Count setName test_date
735 39.0 NaN 0.4 52.0 NaN 144.0 NaN NaN NaN 197.0 NaN 25.0 NaN 4.88 NaN Bloods 2016-05-31 23:00:00
803 40.0 NaN 0.2 81.0 NaN 147.0 NaN NaN NaN 234.0 NaN 35.0 NaN 8.47 NaN Bloods 2016-06-20 23:00:00
347 NaN NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN Research Bloods 2016-06-20 23:00:00
122 40.0 NaN 0.2 81.9 NaN 147.0 NaN NaN NaN 234.0 NaN 35.0 NaN 8.47 NaN Bloods 2016-06-20 23:00:00
I think you need groupby with rename columns by dict:
d = {'C-reactive protein':'CRP', 'Hemoglobin':'Hb',
'Transferrin saturation %':'Transferrin saturations'}
df = df.groupby('test_date').max().rename(columns=d).groupby(axis=1, level=0).max()
print (df)
Albumin CRP Ferritin Haemoglobin Hb Iron \
test_date
2016-04-17 23:00:00 36.0 32.2 99.7 133.0 133.0 NaN
2016-04-25 23:00:00 NaN NaN NaN NaN NaN NaN
2016-06-12 23:00:00 34.0 5.4 55.9 NaN 133.0 NaN
Nancy Index Plasma Platelets Transferrin saturations \
test_date
2016-04-17 23:00:00 NaN NaN 406.0 25.0
2016-04-25 23:00:00 NaN NaN NaN NaN
2016-06-12 23:00:00 NaN NaN 372.0 28.0
UCEIS (0 to 8) WCC White Cell Count
test_date
2016-04-17 23:00:00 NaN 12.35 12.35
2016-04-25 23:00:00 7.0 NaN NaN
2016-06-12 23:00:00 NaN 7.99 NaN
More general solution is reshape by melt, remove duplicates and then create DataFrame back:
d = {'C-reactive protein':'CRP', 'Hemoglobin':'Hb',
'Transferrin saturation %':'Transferrin saturations'}
df = df.rename(columns=d).groupby(axis=1, level=0).max()
df = pd.melt(df, id_vars='test_date').dropna(subset=['value']).drop_duplicates()
df = df.groupby(['test_date','variable'])['value'] \
.apply(lambda x: pd.Series(x.values)) \
.unstack(1) \
.reset_index(level=1, drop=True) \
.reset_index() \
.rename_axis(None,axis=1)
print (df)
test_date Albumin CRP Ferritin Hb Platelets \
0 2016-04-17 23:00:00 1000.0 32.2 99.7 1000.0 406.0
1 2016-04-17 23:00:00 36.0 NaN NaN 133.0 NaN
2 2016-04-25 23:00:00 NaN NaN NaN NaN NaN
3 2016-06-12 23:00:00 34.0 5.4 55.9 133.0 372.0
Transferrin saturations UCEIS (0 to 8) WCC White Cell Count
0 25.0 NaN 12.35 12.35
1 NaN NaN NaN NaN
2 NaN 7.0 NaN NaN
3 28.0 NaN 7.99 NaN
What #jezrael was saying is that if you had a situation where:
Albumin C-reactive protein CRP test_date
0 NaN NaN 32 2016-04-17 23:00:00
1 NaN 8.0 NaN 2016-04-17 23:00:00
then his method would erase the 8.0 reading and keep only the 32 (this is because he does it in two steps (or 3?), in this line: df = df.groupby('test_date').max().rename(columns=d).groupby(axis=1, level=0).max()
df = df.groupby('test_date').max() # selects max of each column
# while collapsing 'test_date'
which for my truncated example would give:
Albumin C-reactive protein CRP test_date
0 NaN 8.0 32 2016-04-17 23:00:00
then rename .rename(columns=d) giving:
Albumin CRP CRP test_date
0 NaN 8.0 32 2016-04-17 23:00:00
then .groupby(axis=1, level=0).max() to group along rows (instead of down columns) which gives:
Albumin CRP test_date
0 NaN 32 2016-04-17 23:00:00
which is where you run the highest risk of losing data.
Alternative
I would split the original data into two frames first
df1 = df[["C-reactive protein","Haemoglobin", ...]]
df2 = df[["CRP", "Hb"]]
# then rename
df2 = df2.rename(columns={"CRP":"C-reactive protein", "Hb":"Haemoglobin", ...})
# use concat to stack them on one another
df3 = pd.concat([df1, df2]) # i've run out of names
df3 = df3.drop_duplicates() # perhaps also drop NAs?
but this is only necessary if you have multiple non-duplicate entries for the same test on the same day.
I have a long list of data structured in the following way
Date, Time, Temperature, Moisture, Accumulated precipitation
1/01/2011, 00:00, 23, 50, 2,
1/01/2011, 00:15, 22, 45, 1,
1/01/2011, 00:30, 20, 39, 0,
1/01/2011, 01:00, 25, 34, 0,
1/01/2011, 01:15, 23, 50, 0,
.
.
.
.
1/01/2011, 23:45, 22, 40, 0,
.
.
.
.
31/01/2011, 00:00, 23, 45, 0,
How I can get the daily averages of the variables Temperature and Moisture for the 31st day of the month?
This is the sort of thing that the pandas library is good at. The basic idea is that you can read data into objects called DataFrames, kind of like an Excel sheet, and then you can do neat things to them. Starting from a temps.csv file I made up to look like yours:
>>> df = pd.read_csv("temps.csv", index_col=False, parse_dates=[[0,1]], skipinitialspace=True)
>>> df = df.rename(columns={"Date _Time": "Time"})
>>> df = df.set_index("Time")
>>> df
Temperature Moisture Accumulated precipitation
Time
2011-01-01 00:00:00 23 50 2
2011-01-01 00:15:00 22 45 1
2011-01-01 00:30:00 20 39 0
2011-01-01 01:00:00 25 34 0
2011-01-01 01:15:00 23 50 0
2011-01-01 23:45:00 22 40 0
2011-01-02 00:00:00 123 250 32
2011-01-02 00:15:00 122 245 31
2011-01-02 00:30:00 120 239 30
2011-01-02 01:00:00 125 234 30
2011-01-02 01:15:00 123 250 30
2011-01-02 23:45:00 122 240 30
Once we have the frame in a nice shape, we can easily resample (the default is the mean):
>>> df.resample("D")
Temperature Moisture Accumulated precipitation
Time
2011-01-01 22.5 43 0.5
2011-01-02 122.5 243 30.5
Or get the max or min:
>>> df.resample("D", how="max")
Temperature Moisture Accumulated precipitation
Time
2011-01-01 25 50 2
2011-01-02 125 250 32
>>> df.resample("D", how="min")
Temperature Moisture Accumulated precipitation
Time
2011-01-01 20 34 0
2011-01-02 120 234 30
Et cetera. Note that this is just the brute average of the recorded data points each day: if you want to resample differently to account for the different distance between measurements, that's easy too. If you're going to be doing data processing in Python, it's definitely worth reading through the 10 minute overview to see if it might be helpful.
Use the suggestions on a different database, I did as follows:
df = pd.read_csv('path-tracks.csv', index_col= 'Date', parse_dates=[0])
df
Lat Lon ID Moisture Temperature Category
Date
2004-02-05 06:45:00 19.7 -95.2 1 45 -38 CCM
2004-02-05 07:45:00 19.7 -94.7 1 34 -48 CCM
2004-02-05 08:45:00 19.3 -93.9 1 57 -60 CCM
2004-02-05 09:45:00 19.0 -93.5 1 89 -58 CCM
2004-02-05 10:45:00 19.0 -92.8 1 34 -50 CCM
2004-02-05 11:45:00 19.2 -92.6 1 23 -40 CCM
2004-02-05 12:45:00 19.9 -93.0 1 10 -43 CCM
2004-02-05 13:15:00 20.0 -92.8 1 50 -32 CCM
2004-05-30 04:45:00 23.1 -100.2 2 45 -45 SCME
2004-05-30 05:45:00 23.2 -100.0 2 68 -56 SCME
2004-05-30 06:45:00 23.3 -100.0 2 90 -48 SCME
2004-05-30 07:45:00 23.3 -100.2 2 100 -32 SCME
2004-05-31 03:15:00 23.4 -99.0 3 12 -36 SCM
2004-05-31 04:15:00 23.5 -98.9 3 34 -46 SCM
2004-05-31 05:15:00 23.6 -98.7 3 56 -68 SCM
2004-05-31 06:15:00 23.7 -98.8 3 78 -30 SCM
Now try to get the daily sum as follows:
df.resample('D',how='sum')
i get the following:
Lat Lon ID Moisture Temperature
Date
2004-02-06 155.8 -748.5 8 342 -369
2004-02-07 NaN NaN NaN NaN NaN
2004-02-08 NaN NaN NaN NaN NaN
2004-02-09 NaN NaN NaN NaN NaN
2004-02-10 NaN NaN NaN NaN NaN
2004-02-11 NaN NaN NaN NaN NaN
2004-02-12 NaN NaN NaN NaN NaN
2004-02-13 NaN NaN NaN NaN NaN
2004-02-14 NaN NaN NaN NaN NaN
2004-02-15 NaN NaN NaN NaN NaN
2004-02-16 NaN NaN NaN NaN NaN
2004-02-17 NaN NaN NaN NaN NaN
2004-02-18 NaN NaN NaN NaN NaN
2004-02-19 NaN NaN NaN NaN NaN
2004-02-20 NaN NaN NaN NaN NaN
2004-02-21 NaN NaN NaN NaN NaN
2004-02-22 NaN NaN NaN NaN NaN
2004-02-23 NaN NaN NaN NaN NaN
2004-02-24 NaN NaN NaN NaN NaN
2004-02-25 NaN NaN NaN NaN NaN
2004-02-26 NaN NaN NaN NaN NaN
2004-02-27 NaN NaN NaN NaN NaN
2004-02-28 NaN NaN NaN NaN NaN
2004-02-29 NaN NaN NaN NaN NaN
2004-03-01 NaN NaN NaN NaN NaN
2004-03-02 NaN NaN NaN NaN NaN
2004-03-03 NaN NaN NaN NaN NaN
2004-03-04 NaN NaN NaN NaN NaN
2004-03-05 NaN NaN NaN NaN NaN
2004-03-06 NaN NaN NaN NaN NaN
2004-03-07 NaN NaN NaN NaN NaN
2004-03-08 NaN NaN NaN NaN NaN
2004-03-09 NaN NaN NaN NaN NaN
2004-03-10 NaN NaN NaN NaN NaN
2004-03-11 NaN NaN NaN NaN NaN
2004-03-12 NaN NaN NaN NaN NaN
2004-03-13 NaN NaN NaN NaN NaN
2004-03-14 NaN NaN NaN NaN NaN
2004-03-15 NaN NaN NaN NaN NaN
2004-03-16 NaN NaN NaN NaN NaN
2004-03-17 NaN NaN NaN NaN NaN
2004-03-18 NaN NaN NaN NaN NaN
2004-03-19 NaN NaN NaN NaN NaN
2004-03-20 NaN NaN NaN NaN NaN
2004-03-21 NaN NaN NaN NaN NaN
2004-03-22 NaN NaN NaN NaN NaN
2004-03-23 NaN NaN NaN NaN NaN
2004-03-24 NaN NaN NaN NaN NaN
2004-03-25 NaN NaN NaN NaN NaN
2004-03-26 NaN NaN NaN NaN NaN
2004-03-27 NaN NaN NaN NaN NaN
2004-03-28 NaN NaN NaN NaN NaN
2004-03-29 NaN NaN NaN NaN NaN
2004-03-30 NaN NaN NaN NaN NaN
2004-03-31 NaN NaN NaN NaN NaN
2004-04-01 NaN NaN NaN NaN NaN
2004-04-02 NaN NaN NaN NaN NaN
2004-04-03 NaN NaN NaN NaN NaN
2004-04-04 NaN NaN NaN NaN NaN
2004-04-05 NaN NaN NaN NaN NaN
2004-04-06 NaN NaN NaN NaN NaN
2004-04-07 NaN NaN NaN NaN NaN
2004-04-08 NaN NaN NaN NaN NaN
2004-04-09 NaN NaN NaN NaN NaN
2004-04-10 NaN NaN NaN NaN NaN
2004-04-11 NaN NaN NaN NaN NaN
2004-04-12 NaN NaN NaN NaN NaN
2004-04-13 NaN NaN NaN NaN NaN
2004-04-14 NaN NaN NaN NaN NaN
2004-04-15 NaN NaN NaN NaN NaN
2004-04-16 NaN NaN NaN NaN NaN
2004-04-17 NaN NaN NaN NaN NaN
2004-04-18 NaN NaN NaN NaN NaN
2004-04-19 NaN NaN NaN NaN NaN
2004-04-20 NaN NaN NaN NaN NaN
2004-04-21 NaN NaN NaN NaN NaN
2004-04-22 NaN NaN NaN NaN NaN
2004-04-23 NaN NaN NaN NaN NaN
2004-04-24 NaN NaN NaN NaN NaN
2004-04-25 NaN NaN NaN NaN NaN
2004-04-26 NaN NaN NaN NaN NaN
2004-04-27 NaN NaN NaN NaN NaN
2004-04-28 NaN NaN NaN NaN NaN
2004-04-29 NaN NaN NaN NaN NaN
2004-04-30 NaN NaN NaN NaN NaN
2004-05-01 NaN NaN NaN NaN NaN
2004-05-02 NaN NaN NaN NaN NaN
2004-05-03 NaN NaN NaN NaN NaN
2004-05-04 NaN NaN NaN NaN NaN
2004-05-05 NaN NaN NaN NaN NaN
2004-05-06 NaN NaN NaN NaN NaN
2004-05-07 NaN NaN NaN NaN NaN
2004-05-08 NaN NaN NaN NaN NaN
2004-05-09 NaN NaN NaN NaN NaN
2004-05-10 NaN NaN NaN NaN NaN
2004-05-11 NaN NaN NaN NaN NaN
2004-05-12 NaN NaN NaN NaN NaN
2004-05-13 NaN NaN NaN NaN NaN
2004-05-14 NaN NaN NaN NaN NaN
2004-05-15 NaN NaN NaN NaN NaN
2004-05-16 NaN NaN NaN NaN NaN
2004-05-17 NaN NaN NaN NaN NaN
2004-05-18 NaN NaN NaN NaN NaN
2004-05-19 NaN NaN NaN NaN NaN
2004-05-20 NaN NaN NaN NaN NaN
2004-05-21 NaN NaN NaN NaN NaN
2004-05-22 NaN NaN NaN NaN NaN
2004-05-23 NaN NaN NaN NaN NaN
2004-05-24 NaN NaN NaN NaN NaN
2004-05-25 NaN NaN NaN NaN NaN
2004-05-26 NaN NaN NaN NaN NaN
2004-05-27 NaN NaN NaN NaN NaN
2004-05-28 NaN NaN NaN NaN NaN
2004-05-29 NaN NaN NaN NaN NaN
2004-05-30 NaN NaN NaN NaN NaN
2004-05-31 92.9 -400.4 8 303 -181
2004-06-01 94.2 -395.4 12 180 -180
I did something wrong? because it no takes into account the date 2004-02-05 6:45:00? How do I fix this error?