My initial df is:
ordinal id_easy latitude longitude
1 141 45.0714 7.6187
2 141 45.0739 7.6195
...
After applying Pivot table
my it looks like:
latitude ... longitude
ordinal 1 2 3 4 5 6 7 8 9 10 ... 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682
id_easy
141 45.1024 45.1027 45.1072 45.1076 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
403 45.0595 45.0595 45.0564 45.0533 45.0501 45.0468 45.0432 45.0356 45.0264 45.0174 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
920 45.0695 44.9727 44.9726 44.9566 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
Everything is almost OK, but here I have first latitude values and then longitude values. Can I do something to make it 1 by 1? for each 'id_easy' - latitude and longitude.
I believe you need DataFrame.sort_index by second level:
df = df.sort_index(axis=1, level=1)
Related
I currently have a dataframe where 1st column is dates (1990 - 2020) and the subsequent columns are 'stocks' that are trading and are NaN if they are not yet being traded. Is there any way to filter the columns based on date range? For example, if 2 years is selected, all stocks that are not null in all columns from 2019-2020 (2 years) will be filtered in.
import pandas as pd
df = pd.read_csv("prices.csv")
df.head()
display(df)
date s_0000 s_0001 s_0002 s_0003 s_0004 s_0005 s_0006 s_0007 s_0008 ... s_2579 s_2580 s_2581 s_2582 s_2583 s_2584 s_2585 s_2586 s_2587 s_2588
0 1990-01-02 NaN 13.389421 NaN NaN NaN NaN NaN 0.266812 NaN ... NaN 1.950358 NaN 7.253997 NaN NaN NaN NaN NaN NaN
1 1990-01-03 NaN 13.588601 NaN NaN NaN NaN NaN 0.268603 NaN ... NaN 1.985185 NaN 7.253997 NaN NaN NaN NaN NaN NaN
2 1990-01-04 NaN 13.610730 NaN NaN NaN NaN NaN 0.269499 NaN ... NaN 1.985185 NaN 7.188052 NaN NaN NaN NaN NaN NaN
3 1990-01-05 NaN 13.477942 NaN NaN NaN NaN NaN 0.270394 NaN ... NaN 1.985185 NaN 7.188052 NaN NaN NaN NaN NaN NaN
4 1990-01-08 NaN 13.477942 NaN NaN NaN NaN NaN 0.272185 NaN ... NaN 1.985185 NaN 7.385889 NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
7806 2020-12-23 116.631310 22.171579 15.890000 16.577030 9.00 65.023491 157.495850 130.347580 27.481012 ... 19.870001 42.675430 2.90 8.850000 9.93 NaN 0.226 207.470001 158.974014 36.650002
7807 2020-12-24 116.641243 21.912146 15.660000 16.606722 8.77 65.292725 158.870193 131.352829 27.813406 ... 20.180000 42.508686 2.88 8.810000 9.91 NaN 0.229 205.270004 159.839264 36.009998
7808 2020-12-28 117.158287 22.191536 16.059999 16.200956 8.93 66.429459 157.011383 136.050766 28.272888 ... 19.959999 42.528305 2.69 8.760000 9.73 NaN 0.251 199.369995 161.500122 36.709999
7809 2020-12-29 116.561714 21.991972 15.860000 16.745275 8.80 66.529175 154.925140 134.239273 27.705866 ... 19.530001 41.949623 2.59 8.430000 9.61 NaN 0.243 197.839996 162.226105 36.610001
7810 2020-12-30 116.720795 22.899990 16.150000 17.932884 8.60 66.299828 155.884232 133.094650 27.725418 ... 19.870001 42.390987 2.65 8.540000 9.72 NaN 0.230 201.309998 163.369812 36.619999
so I want to do something like:
year = input(Enter number of years:)
year = 3
If year is 3, the daterange selected would be 3 years to 2020 (2018-2020)
You could try the following code:
df[(df['date'] >= '2019-01-01') & (df['date'] <= '2020-12-30')]
Once you filter, you could remove all rows, which include NaN:
df.dropna()
I have a pandas dataframe like this:
In [31]: df.pivot(index='orderid', columns='C', values='productid')
Out [31]:
C 1 2 3 4 5 6 7 8 9 10 ... 71 72 73 74 75 76 77 78 79 80
orderid
20000765 624380 nan nan nan nan nan nan nan nan nan ... nan nan nan nan nan nan nan nan nan nan
20000766 624380 nan nan nan nan nan nan nan nan nan ... nan nan nan nan nan nan nan nan nan nan
20000768 1305984 1305985 1305983 1306021 nan nan nan nan nan nan ... nan nan nan nan nan nan nan nan nan nan
I would like to delete the first column. However, when I do that the table unpivots again.
What I can I do to delete the "C" / "Orderid" column and the numbers underneath it?
So I have two dataframes, one of size (462, 38) and the other (36, 34). Theoretically, I should be able to multiply them (the first one without the first two columns, making it (462,36)) and get a matrix of the size (462,34), but I'm receiving an error. This is the script I'm using:
df_technique = df_binary.iloc[:,2:].mul(df_pim.values, axis=0)
df_binary is the dataframe of size (462,38)
df_pim is the dataframe of size (36,34)
I'm getting this error:
ValueError: Unable to coerce to DataFrame, shape must be (462, 36): given (36, 34)
Pretty new to pandas, but a little confused on why this isn't working.
Let's create a little toy example:
In [6]: import numpy as np
In [7]: import pandas as pd
In [8]: df1 = pd.DataFrame(np.random.rand(462,38))
In [9]: df2 = pd.DataFrame(np.random.rand(36,34))
In [10]: df1.iloc[:, 2:].shape
Out[10]: (462, 36)
Let's try .mul:
In [11]: df1.iloc[:, 2:].mul(df2)
Out[11]:
0 1 2 3 4 5 6 7 ... 30 31 32 33 34 35 36 37
0 NaN NaN 0.069152 0.433575 0.237038 0.552856 0.007651 0.305549 ... 0.041911 0.490022 0.093998 0.226641 NaN NaN NaN NaN
1 NaN NaN 0.329819 0.024969 0.305772 0.240036 0.298576 0.076755 ... 0.051576 0.246010 0.164661 0.071771 NaN NaN NaN NaN
2 NaN NaN 0.335649 0.143226 0.086966 0.469313 0.096287 0.323846 ... 0.118156 0.509485 0.019587 0.750393 NaN NaN NaN NaN
3 NaN NaN 0.540942 0.140480 0.201622 0.134188 0.436736 0.318038 ... 0.362616 0.018998 0.553993 0.194979 NaN NaN NaN NaN
4 NaN NaN 0.249867 0.410236 0.036971 0.023470 0.001242 0.023679 ... 0.105056 0.766388 0.356008 0.117736 NaN NaN NaN NaN
5 NaN NaN 0.430849 0.154554 0.048016 0.040484 0.026158 0.923512 ... 0.063798 0.242107 0.088325 0.076771 NaN NaN NaN NaN
6 NaN NaN 0.150360 0.048118 0.089665 0.439097 0.008246 0.000882 ... 0.168322 0.672298 0.144217 0.014767 NaN NaN NaN NaN
7 NaN NaN 0.002987 0.338054 0.242131 0.104348 0.583705 0.008956 ... 0.099933 0.005963 0.209813 0.013677 NaN NaN NaN NaN
8 NaN NaN 0.730034 0.576801 0.702868 0.023938 0.025093 0.359022 ... 0.004573 0.118901 0.181754 0.489394 NaN NaN NaN NaN
9 NaN NaN 0.054859 0.140126 0.526472 0.074119 0.503533 0.138453 ... 0.148497 0.033773 0.199062 0.638204 NaN NaN NaN NaN
10 NaN NaN 0.011797 0.018803 0.279219 0.006031 0.351008 0.808695 ... 0.157058 0.368678 0.391322 0.037119 NaN NaN NaN NaN
11 NaN NaN 0.002085 0.006149 0.440413 0.014603 0.114628 0.052740 ... 0.032606 0.031034 0.627347 0.250106 NaN NaN NaN NaN
12 NaN NaN 0.459560 0.396850 0.323084 0.017022 0.113606 0.114051 ... 0.000245 0.152969 0.007480 0.375953 NaN NaN NaN NaN
13 NaN NaN 0.424696 0.774762 0.742045 0.035061 0.013645 0.344456 ... 0.227203 0.315968 0.272345 0.077855 NaN NaN NaN NaN
14 NaN NaN 0.074256 0.545422 0.107654 0.313041 0.276494 0.347180 ... 0.216622 0.266681 0.044627 0.643293 NaN NaN NaN NaN
15 NaN NaN 0.083460 0.003905 0.680099 0.468907 0.034795 0.298261 ... 0.547690 0.045437 0.059649 0.574525 NaN NaN NaN NaN
16 NaN NaN 0.130475 0.413133 0.046050 0.069645 0.156101 0.117565 ... 0.108358 0.026304 0.381912 0.232132 NaN NaN NaN NaN
17 NaN NaN 0.365677 0.238611 0.185642 0.528028 0.051163 0.739312 ... 0.167501 0.613983 0.138576 0.508531 NaN NaN NaN NaN
18 NaN NaN 0.010499 0.694223 0.064765 0.250918 0.219200 0.405163 ... 0.036581 0.579350 0.029583 0.487232 NaN NaN NaN NaN
19 NaN NaN 0.553498 0.622697 0.059322 0.120012 0.243311 0.351804 ... 0.784040 0.222959 0.637571 0.557461 NaN NaN NaN NaN
20 NaN NaN 0.152201 0.536858 0.126313 0.089983 0.091302 0.248702 ... 0.214070 0.035524 0.345542 0.114386 NaN NaN NaN NaN
21 NaN NaN 0.170115 0.157332 0.108346 0.093566 0.492156 0.052809 ... 0.224359 0.763030 0.837852 0.007604 NaN NaN NaN NaN
22 NaN NaN 0.107562 0.125040 0.075692 0.101576 0.025918 0.197318 ... 0.088839 0.336992 0.290796 0.367974 NaN NaN NaN NaN
23 NaN NaN 0.001356 0.723209 0.078923 0.159972 0.094777 0.198491 ... 0.225621 0.059736 0.782560 0.678412 NaN NaN NaN NaN
24 NaN NaN 0.205520 0.019794 0.075210 0.000622 0.119975 0.116428 ... 0.392006 0.460143 0.238348 0.598957 NaN NaN NaN NaN
25 NaN NaN 0.004261 0.003159 0.003675 0.108487 0.344357 0.218113 ... 0.002379 0.126916 0.522164 0.019517 NaN NaN NaN NaN
26 NaN NaN 0.217224 0.052694 0.508061 0.028095 0.244016 0.057007 ... 0.160138 0.285628 0.447312 0.000999 NaN NaN NaN NaN
27 NaN NaN 0.066310 0.149280 0.772441 0.078405 0.200181 0.392209 ... 0.334078 0.029189 0.129492 0.159437 NaN NaN NaN NaN
28 NaN NaN 0.288818 0.679855 0.418685 0.432491 0.185340 0.754593 ... 0.124270 0.288381 0.033000 0.033425 NaN NaN NaN NaN
29 NaN NaN 0.301348 0.286180 0.048910 0.116658 0.331689 0.272144 ... 0.180669 0.050509 0.156428 0.001210 NaN NaN NaN NaN
.. .. .. ... ... ... ... ... ... ... ... ... ... ... .. .. .. ..
432 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
433 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
434 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
435 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
436 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
437 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
438 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
439 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
440 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
441 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
442 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
443 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
444 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
445 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
446 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
447 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
448 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
449 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
450 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
451 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
452 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
453 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
454 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
455 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
456 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
457 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
458 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
459 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
460 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
461 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN
[462 rows x 38 columns]
This works but there are lots of NaN values. This is because .mul does element-wise multiplication of DataFrames and expects the shapes of the DataFrames to be (A, B) x (A, B).
We can reproduce your error when using df2.values because pandas tries to create a (462, 36) DataFrame out of the (36, 34) df2.values numpy array and fails:
In [13]: df1.iloc[:, 2:].mul(df2.values, axis=0)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-13-e33efa65ac07> in <module>()
----> 1 df1.iloc[:, 2:].mul(df2.values, axis=0)
~/miniconda3/envs/so_question/lib/python3.6/site-packages/pandas/core/ops.py in f(self, other, axis, level, fill_value)
1515 def f(self, other, axis=default_axis, level=None, fill_value=None):
1516
-> 1517 other = _align_method_FRAME(self, other, axis)
1518
1519 if isinstance(other, ABCDataFrame): # Another DataFrame
~/miniconda3/envs/so_question/lib/python3.6/site-packages/pandas/core/ops.py in _align_method_FRAME(left, right, axis)
1438 "must be {req_shape}: given {given_shape}"
1439 .format(req_shape=left.shape,
-> 1440 given_shape=right.shape))
1441
1442 right = left._constructor(right, index=left.index,
ValueError: Unable to coerce to DataFrame, shape must be (462, 36): given (36, 34)
Judging from your description you meant to use .dot which is for matrix multiplication (M, N) x (N, P) = (M, P) instead of .mul:
In [17]: df1.iloc[:, 2:].dot(df2.values)
Out[17]:
0 1 2 3 4 ... 29 30 31 32 33
0 9.971979 6.981089 8.694962 8.276216 8.351839 ... 8.480659 8.414970 8.240727 9.672677 7.565088
1 9.410364 8.590233 8.195569 9.140421 8.921937 ... 8.570695 7.076403 10.040924 8.267829 8.325542
2 11.095329 9.576891 9.809456 10.026001 10.696129 ... 9.234288 8.387796 11.306832 10.665649 8.983012
3 10.195718 8.550438 9.006633 9.628953 9.156615 ... 8.921587 7.133165 10.254906 9.561331 8.968170
4 10.169194 9.450612 8.424815 8.513062 8.537338 ... 8.358502 8.129391 9.731362 9.567829 8.041028
5 8.699785 7.506038 7.247128 8.637461 7.905982 ... 7.635597 6.348187 8.452615 7.902099 7.091182
6 9.231585 7.692058 7.744410 8.488541 8.450400 ... 7.932535 6.753257 8.688555 8.658745 7.056945
7 9.622983 8.674558 6.987342 8.077567 7.955983 ... 8.264570 6.685770 9.142239 9.154905 7.833893
8 11.309864 9.142239 8.419535 8.680210 9.712205 ... 8.717705 7.664762 10.649243 9.459739 8.912268
9 11.334008 8.958880 8.296706 9.420058 9.756113 ... 9.399543 7.366976 10.139639 10.154981 8.350516
10 11.181974 10.031747 9.294010 11.156024 10.066875 ... 9.613627 8.053175 11.583264 10.818940 9.330073
11 9.980280 8.311433 7.501879 8.494200 7.832875 ... 8.457131 7.320341 9.921714 8.975098 8.443220
12 9.740919 8.728053 7.673338 8.007482 9.291362 ... 8.483178 6.957094 9.554731 8.977761 7.974371
13 11.167700 10.239565 11.016358 11.550972 10.918983 ... 9.373120 9.645397 12.572644 11.505732 9.894803
14 10.680348 8.988366 9.009413 8.823574 9.424792 ... 8.959995 8.185815 9.940674 9.927982 8.334847
15 11.830672 10.053389 9.302099 10.251534 9.440460 ... 10.139816 9.478568 10.860152 11.184854 8.287742
16 9.339399 8.916890 7.187363 8.922513 8.426588 ... 7.944471 7.323630 9.814955 8.656069 7.053032
17 11.143226 8.808918 9.178566 8.847451 9.175966 ... 9.158147 7.899361 9.656798 9.994228 8.879669
18 9.889310 8.284430 7.786766 8.221434 8.435520 ... 7.373773 6.921359 8.685328 9.677998 8.130656
19 11.021434 9.315304 7.878728 9.712656 9.381570 ... 8.506453 7.138838 9.409518 10.872490 8.920906
20 8.465932 7.376756 7.873896 8.216718 7.981726 ... 7.606467 6.071998 8.783477 8.713840 6.978514
21 10.044225 8.490197 7.624420 8.063905 8.485409 ... 8.590962 6.953432 10.188383 8.691053 7.867377
22 10.055971 8.596160 8.004438 8.487240 8.243792 ... 8.232528 6.805463 9.322255 10.063531 7.578448
23 11.260788 10.345866 8.547624 9.151512 9.672593 ... 8.784488 8.244342 10.440683 11.396178 9.597543
24 11.289788 9.181376 9.678903 9.205845 10.020440 ... 9.945561 8.558815 10.285292 10.364807 8.624407
25 9.735467 7.731079 7.858442 8.098820 7.329694 ... 8.992903 7.179417 8.045042 8.872422 7.592073
26 8.951750 7.260067 8.087883 8.625076 7.796546 ... 8.368493 6.549368 8.282185 8.082291 7.088356
27 8.493655 7.288378 7.554746 7.793805 7.555760 ... 7.146606 5.828258 7.744346 8.613483 7.455887
28 9.915362 8.161043 9.110862 9.147840 8.513224 ... 8.676128 7.878927 8.752682 10.031502 8.360679
29 11.225115 8.611056 9.385648 9.472114 9.581927 ... 8.964314 8.321400 10.043396 10.177277 8.422191
.. ... ... ... ... ... ... ... ... ... ... ...
432 7.627470 5.734383 6.626045 6.156603 7.429465 ... 6.461749 5.636417 6.518002 6.925516 5.183975
433 11.643077 10.056751 9.313494 10.320367 9.455274 ... 9.992466 8.058518 11.759124 11.398521 9.627579
434 9.011228 8.956598 7.391039 8.274706 8.709996 ... 7.739301 7.270689 8.638466 8.497952 7.203451
435 9.265928 7.693394 8.228558 7.400204 8.619893 ... 7.547710 7.003936 8.839432 9.568429 7.334440
436 9.920282 9.012674 8.142472 9.055654 9.253443 ... 8.413467 6.989122 8.762788 9.328164 7.850035
437 9.944510 7.895858 7.797087 8.212704 8.687516 ... 8.068419 6.169651 8.120617 9.299318 6.777742
438 10.494847 8.672840 9.410736 9.288373 9.146171 ... 9.597911 7.760452 10.141617 10.452433 9.498194
439 9.867494 8.142811 8.214623 8.060762 9.040205 ... 8.427159 7.106905 10.524450 9.292304 8.472231
440 10.130309 8.778968 8.098571 9.036090 9.253507 ... 8.885713 7.310063 10.105144 9.545208 8.807030
441 10.251218 7.729740 7.370521 8.384513 6.958638 ... 8.240842 6.977351 9.267558 9.143776 7.798779
442 8.748951 7.197680 7.028517 7.348912 7.809581 ... 7.896705 6.635679 6.819049 8.045874 6.039097
443 11.703053 9.065089 8.927836 9.542447 9.241294 ... 9.779255 8.794765 10.497803 9.763386 8.408181
444 11.433442 10.707882 10.134235 11.019976 10.722692 ... 9.853438 8.556864 11.099727 11.881496 9.348087
445 8.794981 7.614707 7.855584 8.671275 7.436318 ... 7.282331 6.869884 8.410838 8.980563 7.358201
446 8.735594 7.520451 7.336556 8.235567 7.554697 ... 6.827973 6.302846 8.694671 7.736256 7.746888
447 8.930933 7.674217 7.478743 8.077684 7.300099 ... 7.524244 6.481388 9.119867 8.043605 6.514627
448 9.701053 7.237276 8.207318 8.704792 8.145399 ... 8.176370 7.334896 7.827332 9.504545 8.012765
449 9.932439 8.175081 7.803909 9.206564 9.782949 ... 9.125961 7.279960 8.518182 9.648755 7.742197
450 9.365815 8.567567 7.579989 8.670692 9.055934 ... 7.980583 6.721377 9.921531 9.309550 8.125973
451 9.075117 8.108147 8.607631 8.185085 7.895500 ... 8.036308 6.766023 9.057757 9.009128 7.459431
452 9.059566 8.659570 7.626333 9.360041 8.226206 ... 7.634966 7.739625 8.960765 8.781221 7.528786
453 8.432637 7.678105 7.610083 7.640916 8.305286 ... 6.888020 6.553264 8.646732 8.628493 7.721341
454 9.055456 7.311839 7.413838 7.267197 7.253457 ... 7.585661 7.061526 8.355587 8.697914 7.646652
455 9.516074 8.071045 8.149921 9.263839 8.287315 ... 7.421049 6.959464 9.453780 9.958168 8.350330
456 10.070524 8.916685 9.093280 9.447184 9.086083 ... 9.234514 7.800037 10.031802 9.686283 9.196937
457 10.726476 8.270430 7.704192 8.026725 9.541432 ... 8.338713 6.688143 8.785184 10.426090 8.658769
458 9.751500 7.310215 8.136909 8.312466 7.316233 ... 7.874102 7.796568 9.434560 7.996315 8.094219
459 9.501868 8.039517 7.932875 8.385449 8.937402 ... 8.569393 6.948936 7.823537 9.030505 7.035568
460 9.476510 7.735094 7.266457 9.046955 8.358792 ... 8.635297 7.403172 8.382819 8.930228 6.963464
461 10.638806 9.091559 8.946520 9.440301 10.823085 ... 8.734041 7.767178 9.745443 9.859176 8.198679
[462 rows x 34 columns]
How to create empty pandas data frame with specific number of columns (eg. 50), and filling its rows with columns of other pandas data frames with various columns (less than the destination data frame columns)
Here is what I have done:
I have created empty data frame as follow:
L=pd.DataFrame()
and fill it with:
L.loc[-1]=df1['A']
I get the following error:
ValueError: cannot set a frame with no defined columns
I have tried following in order to fill the data frame, but at the end it was empty:
L.append(df1['A'])
the result of the #Jacob solution is as follow, while the maximum number of df1['A'] element was only 35. Also, I just want to copy df1['A'] to the L dataframe, not its column name. how can I prevent it?
3124 3125 3126 3127 3128 3129 3130 3131 \
A 602.0 -1474.0 -1474.0 -1474.0 -1474.0 -1474.0 -1474.0 -1474.0
A NaN NaN NaN NaN NaN NaN NaN NaN
A NaN NaN NaN NaN NaN NaN NaN NaN
A NaN NaN NaN NaN NaN NaN NaN NaN
A NaN NaN NaN NaN NaN NaN NaN NaN
A NaN NaN NaN NaN NaN NaN NaN NaN
A NaN NaN NaN NaN NaN NaN NaN NaN
3132 3134 ... 38 39 40 41 42 45 \
A -1255.0 -1474.0 ... NaN NaN NaN NaN NaN NaN
A NaN NaN ... NaN NaN NaN NaN NaN NaN
A NaN NaN ... NaN NaN NaN NaN NaN NaN
A NaN NaN ... NaN NaN NaN NaN NaN NaN
A NaN NaN ... 127.0 -127.0 143.0 127.0 -143.0 NaN
A NaN NaN ... NaN NaN NaN NaN NaN 127.0
A NaN NaN ... NaN NaN NaN NaN NaN NaN
46 47 48 49
A NaN NaN NaN NaN
A NaN NaN NaN NaN
A NaN NaN NaN NaN
A NaN NaN NaN NaN
A NaN NaN NaN NaN
A -143.0 NaN NaN NaN
A NaN 127.0 -127.0 143.0
[7 rows x 60 columns]
I think you want
L = pd.DataFrame()
L = L.append(df1['A'].transpose())
Note that this will use your index from L as your column names, and add those columns if they aren't already present as column labels in L.
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?