Here is a sample of my dataframe:
benzene toluene styrene xylenes + ethylbenzene 1,3,5-trimethylbenzene propylbenzene chlorobenzene 4-ethyltoluene isopropyl benzene 1,3-butadiene
0 1.1040 NaN NaN NaN NaN NaN NaN NaN NaN 0.1914
1 1.1312 NaN NaN NaN NaN NaN NaN NaN NaN 0.2353
2 1.6092 NaN NaN NaN NaN NaN NaN NaN NaN 0.7289
3 1.2578 NaN NaN NaN NaN NaN NaN NaN NaN 0.3269
4 1.8245 NaN NaN NaN NaN NaN NaN NaN NaN 0.2859
5 1.1438 NaN NaN NaN NaN NaN NaN NaN NaN 0.1229
6 1.1492 NaN NaN NaN NaN NaN NaN NaN NaN 0.4135
7 0.8638 NaN NaN NaN NaN NaN NaN NaN NaN 0.6211
8 1.3209 NaN NaN NaN NaN NaN NaN NaN NaN 0.6243
9 1.8316 NaN NaN NaN NaN NaN NaN NaN NaN 0.6711
10 1.0491 NaN NaN NaN NaN NaN NaN NaN NaN 0.3379
11 1.5014 NaN NaN NaN NaN NaN NaN NaN NaN 0.7981
12 0.8355 NaN NaN NaN NaN NaN NaN NaN NaN 0.2950
13 1.5157 NaN NaN NaN NaN NaN NaN NaN NaN 0.7630
14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
15 0.3561 NaN NaN NaN NaN NaN NaN NaN NaN 0.1983
16 16.9953 NaN NaN NaN NaN NaN NaN NaN NaN 11.6154
17 NaN 2.5533 1.7676 4.8479 2.1782 2.0693 NaN NaN NaN NaN
18 NaN 4.8740 4.5862 5.6155 5.3850 5.1158 NaN NaN NaN NaN
19 NaN 5.5761 7.1540 5.2305 7.0061 6.6558 NaN NaN NaN NaN
20 NaN 5.6369 8.0997 5.0377 7.4323 7.0607 NaN NaN NaN NaN
21 NaN 5.6762 8.5204 5.0503 7.9827 7.5835 NaN NaN NaN NaN
22 NaN 5.7317 8.9214 4.7230 8.4647 8.0415 NaN NaN NaN NaN
23 NaN 5.6349 8.3186 4.2832 8.4023 7.9822 NaN NaN NaN NaN
24 NaN 5.5504 9.1297 4.2451 8.2951 7.8803 NaN NaN NaN NaN
25 NaN 5.9629 9.0821 4.3384 9.0512 8.5986 NaN NaN NaN NaN
26 NaN 5.7665 10.1691 4.2266 8.9481 8.5007 NaN NaN NaN NaN
27 NaN 5.6709 9.1637 4.0334 9.0945 8.6397 NaN NaN NaN NaN
28 NaN 5.8178 8.8859 4.0104 9.0523 8.5997 NaN NaN NaN NaN
29 NaN 5.5470 9.0448 3.9718 8.8667 8.4233 NaN NaN NaN NaN
[...]
Actual size is 66x10
I have sequence of about 17 non NAN values for each column. I would like to drop the Nan cells to have a a full 17x10 table.
I used pd.DataFrame.dropna but it doesn't remove patches of cell. Is there a way to do so without looping over columns?
I think you can use apply with dropna:
df = df.apply(lambda x: pd.Series(x.dropna().values))
print (df)
Another numpy solution with sorting numpy array created by values and then remove rows with all NaN by dropna:
df = pd.DataFrame(np.sort(df.values, axis=0), index=df.index, columns=df.columns)
.dropna(how='all')
print (df)
Related
I have a multi-index dataframe that is set up as follows:
index = pd.MultiIndex.from_product([['A','B','C'], ['x','y', 'z']])
multi_index = pd.DataFrame(np.nan, index=np.arange(10), columns=index)
Which produces the following output:
A B C
x y z x y z x y z
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN
I am trying to fill the values of the multi-index data frame with values. As a toy example, what I've tried to do is change the value of ['A','x',0] as follows:
multi_index['A']['x'].loc[0] = 65.2
However, I receive a 'SettingWithCopyWarning', which makes sense to me. I've also tried
multi_index['A'].iloc[[1],0] = 65.2
and received the same warning.
Is there a way one can change the values of a multi-index dataframe on a entry-by-entry basis? I.E changing the 0th index of ['A','x']?
Try:
multi_index.loc[0, ('A', 'x')] = 65.2
You can use tuples with loc for index labelling to access your multiindex columns or rows.
Or you can use iloc like this using integer index position selection, for example 2 here is the third column:
multi_index.iloc[0, 2] = 70.3
Output:
A B C
x y z x y z x y z
0 65.2 NaN 70.3 NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN
Hi I am trying to plot the two values in matrix form, I tried many things but nothing worked, can someone please help? I want similarity values to be the values, my data:
https://github.com/mayuripandey/Data-Analysis/blob/main/matrix.csv
Desired output:
Use pivot_table:
df['Topic_model'] = df['Topic_model'].str.split('-', n=1).str[1].astype(int)
out = (df.pivot_table('Similarity', 'Topic_model', 'Topic_model')
.rename_axis(index='Topic_2', columns='Topic_1'))
Output:
>>> out
Topic_1 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
Topic_2
-1 0.25 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
0 NaN 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN NaN NaN NaN 0.166667 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
11 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.25 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
13 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
15 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
16 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
17 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
18 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
20 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
21 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
23 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
24 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
25 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN NaN NaN NaN NaN NaN NaN NaN
26 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN
27 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN
28 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN
29 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN NaN NaN NaN
30 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN NaN NaN
31 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN NaN
32 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 NaN
33 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0
df = pd.read_csv('https://raw.githubusercontent.com/mayuripandey/Data-Analysis/main/matrix.csv', usecols=['Topic_model', 'Similarity'])
df.Topic_model = df.Topic_model.apply(lambda x: x[0:6] + '0' + x[6:] if len(x) == 7 else x)
df = df.pivot(columns='Topic_model')
Output:
Similarity ...
Topic_model Topic--1 Topic-00 Topic-01 Topic-02 Topic-03 Topic-04 Topic-05 Topic-06 Topic-07 ... Topic-25 Topic-26 Topic-27 Topic-28 Topic-29 Topic-30 Topic-31 Topic-32 Topic-33
0 0.25 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN 1.0 NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN 0.111111 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN 0.111111 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN 0.111111 NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN NaN NaN 0.111111 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN NaN NaN 0.166667 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
10 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
11 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
13 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
14 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
15 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
16 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
17 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
18 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
19 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
20 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
21 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
22 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
23 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
24 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
25 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 0.0 NaN NaN NaN NaN NaN NaN NaN NaN
26 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
27 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN 0.111111 NaN NaN NaN NaN NaN NaN NaN
28 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN 0.111111 NaN NaN NaN NaN NaN NaN
29 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN 0.111111 NaN NaN NaN NaN NaN
30 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN 0.0 NaN NaN NaN NaN
31 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 0.0 NaN NaN NaN
32 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN 0.0 NaN NaN
33 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN 0.0 NaN
34 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN 0.0
I have a squared dataframe containing over 505 rows and columns (a 505x505 matrix)
which I need to dot multiply to an ndarray from numpy (505 items).
the problem is that the result is an ndarray with 505 items, full of nan.
I tried replicating it on a separate notebook, but I wasn't able to.
in
print('df ', df)
print('info ', df.info())
result = np.dot(df, np.random.rand(505))
print('result.shape: ', result.shape)
print('result ', result)
out
df A AAL AAP AAPL ABBV ABC ABMD \
A 0.093188 0.072021 0.048887 0.067503 0.047795 0.052311 0.051706
AAL 0.072021 0.547093 0.099290 0.069475 0.045120 0.066275 0.065950
AAP 0.048887 0.099290 0.143932 0.055590 0.043934 0.059230 0.041979
AAPL 0.067503 0.069475 0.055590 0.140050 0.051688 0.054113 0.060444
ABBV 0.047795 0.045120 0.043934 0.051688 0.096598 0.047673 0.032663
... ... ... ... ... ... ... ...
YUM 0.042185 0.095983 0.058538 0.052228 0.036547 0.046676 0.031293
ZBH 0.054474 0.127670 0.057043 0.054673 0.046718 0.054718 0.053090
ZBRA 0.079731 0.100945 0.064364 0.091272 0.054140 0.062255 0.066586
ZION 0.061233 0.176829 0.075915 0.048804 0.044935 0.066857 0.044151
ZTS 0.060966 0.052413 0.054156 0.069211 0.047445 0.054443 0.041018
XRAY XYL YUM ZBH ZBRA ZION ZTS
A 0.053152 0.064197 0.042185 0.054474 0.079731 0.061233 0.060966
AAL 0.110541 0.125551 0.095983 0.127670 0.100945 0.176829 0.052413
AAP 0.064716 0.071780 0.058538 0.057043 0.064364 0.075915 0.054156
AAPL 0.047973 0.067265 0.052228 0.054673 0.091272 0.048804 0.069211
ABBV 0.049469 0.043552 0.036547 0.046718 0.054140 0.044935 0.047445
... ... ... ... ... ... ... ...
YUM 0.060310 0.059523 0.098728 0.069827 0.051222 0.057302 0.057192
ZBH 0.084555 0.068429 0.069827 0.136291 0.070115 0.089688 0.058264
ZBRA 0.068271 0.085070 0.051222 0.070115 0.185910 0.087744 0.069007
ZION 0.099294 0.098861 0.057302 0.089688 0.087744 0.204927 0.040132
ZTS 0.052646 0.057712 0.057192 0.058264 0.069007 0.040132 0.095019
[505 rows x 505 columns]
<class 'pandas.core.frame.DataFrame'>
Index: 505 entries, A to ZTS
Columns: 505 entries, A to ZTS
dtypes: float64(505)
memory usage: 2.0+ MB
info None
result.shape: (505,)
result [nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan]
In this situation you should use DataFrame.dot
import pandas as pd;
import numpy as np
df = pd.DataFrame(np.random.randn(5,5), columns=['one', 'two', 'three', 'four', 'five'])
other = pd.DataFrame(np.random.randn(5,5), columns=['one', 'two', 'three', 'four', 'five']).transpose()
Notice that the indices of the second DataFrame must match the rows of the first, then you can multiply them
df.dot(other)
# or
other.dot(df)
Remember that the matrix multiplication is not commutative.
If you do df.dot(other) it will return a dataframe with the indices of df and the columns of other, if you call it with a numpy array it will return a dataframe with columns counting [0,1,2,...]
I am getting the following error
ValueError: The number of derivatives at boundaries does not match: expected 2, got 0+0
while trying to use cubic interpolation in pandas on a 2d matrix.
mat = pd.read_csv("m.csv")
mat = mat.interpolate(method='cubic')
Csv to reproduce can be downloaded here
I think the issue is that you need at least 4 points for cubic interpolation, look at this : question. It works for column 0:
mat['0'].interpolate(method='cubic', inplace=True)
print(mat)
0 1 2 3 4 5 6 7 8 9 10 11 12 13
0 -0.000347 NaN 0.002546 NaN 0.001891 NaN NaN NaN 0.001845 NaN 0.001507 NaN 0.000452 NaN
1 0.000210 NaN NaN NaN NaN NaN NaN 0.002109 NaN NaN NaN NaN NaN NaN
2 0.000438 NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.004112 NaN NaN NaN
3 0.000419 NaN NaN 0.001114 NaN 0.000599 0.003813 NaN 0.003342 NaN NaN NaN 0.001095 NaN
4 0.000240 0.001143 NaN 0.002955 NaN 0.004867 0.000857 NaN 0.002584 NaN NaN 0.002765 -0.000012 NaN
5 -0.000016 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 -0.000264 NaN NaN -0.000257 NaN 0.002049 0.001710 NaN -0.000041 NaN NaN NaN 0.000934 NaN
7 -0.000419 0.003044 NaN NaN NaN NaN NaN NaN NaN NaN 0.001225 NaN NaN NaN
8 -0.000397 NaN 0.001417 NaN NaN NaN NaN 0.001647 NaN NaN NaN NaN NaN NaN
9 -0.000169 NaN NaN NaN NaN 0.000154 NaN NaN NaN 0.000424 -0.000507 NaN 0.000550 NaN
10 0.000072 NaN NaN 0.000768 NaN NaN 0.000315 NaN NaN 0.000055 -0.000477 NaN 0.002413 NaN
11 0.000078 NaN NaN NaN NaN 0.000512 NaN NaN NaN NaN NaN NaN NaN NaN
12 -0.000399 NaN NaN NaN NaN 0.003461 0.001000 NaN NaN NaN NaN NaN 0.001112 NaN
13 -0.001608 NaN 0.001928 NaN NaN NaN NaN NaN NaN 0.001780 0.002132 NaN NaN NaN
I have a dataframe read from a csv file. When feeding a random forest or SVM model with this data I get the error respone
"ValueError: Input contains NaN, infinity or a value too large for dtype('float64')."
So when I check my dataframe for NaN values it returns my whole data frame as NaN values. However, when I print an arbitrary cell in my dataframe it gives me the correct data point and not a NaN. Anyone that knows what's going on here?
Using the code below to retrieve my NaN values:
X_test.isnull().values.any()
(returns True)
null_rows = X_test[X_test.isnull()]
print(null_rows)
lag k = -1 lag k = -2 lag k = -3 lag k = 1 lag k = 2 lag k = 3 \
137354 NaN NaN NaN NaN NaN NaN
137355 NaN NaN NaN NaN NaN NaN
137356 NaN NaN NaN NaN NaN NaN
137357 NaN NaN NaN NaN NaN NaN
137358 NaN NaN NaN NaN NaN NaN
137359 NaN NaN NaN NaN NaN NaN
137360 NaN NaN NaN NaN NaN NaN
137361 NaN NaN NaN NaN NaN NaN
137362 NaN NaN NaN NaN NaN NaN
137363 NaN NaN NaN NaN NaN NaN
137364 NaN NaN NaN NaN NaN NaN
137365 NaN NaN NaN NaN NaN NaN
137366 NaN NaN NaN NaN NaN NaN
137367 NaN NaN NaN NaN NaN NaN
137368 NaN NaN NaN NaN NaN NaN
137369 NaN NaN NaN NaN NaN NaN
137370 NaN NaN NaN NaN NaN NaN
137371 NaN NaN NaN NaN NaN NaN
137372 NaN NaN NaN NaN NaN NaN
137373 NaN NaN NaN NaN NaN NaN
137374 NaN NaN NaN NaN NaN NaN
137375 NaN NaN NaN NaN NaN NaN
137376 NaN NaN NaN NaN NaN NaN
137377 NaN NaN NaN NaN NaN NaN
137378 NaN NaN NaN NaN NaN NaN
137379 NaN NaN NaN NaN NaN NaN
137380 NaN NaN NaN NaN NaN NaN
137381 NaN NaN NaN NaN NaN NaN
137382 NaN NaN NaN NaN NaN NaN
137383 NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ...
140176 NaN NaN NaN NaN NaN NaN
140177 NaN NaN NaN NaN NaN NaN
140178 NaN NaN NaN NaN NaN NaN
140179 NaN NaN NaN NaN NaN NaN
140180 NaN NaN NaN NaN NaN NaN
140181 NaN NaN NaN NaN NaN NaN
140182 NaN NaN NaN NaN NaN NaN
140183 NaN NaN NaN NaN NaN NaN
140184 NaN NaN NaN NaN NaN NaN
140185 NaN NaN NaN NaN NaN NaN
140186 NaN NaN NaN NaN NaN NaN
140187 NaN NaN NaN NaN NaN NaN
140188 NaN NaN NaN NaN NaN NaN
140189 NaN NaN NaN NaN NaN NaN
140190 NaN NaN NaN NaN NaN NaN
140191 NaN NaN NaN NaN NaN NaN
140192 NaN NaN NaN NaN NaN NaN
140193 NaN NaN NaN NaN NaN NaN
140194 NaN NaN NaN NaN NaN NaN
140195 NaN NaN NaN NaN NaN NaN
140196 NaN NaN NaN NaN NaN NaN
140197 NaN NaN NaN NaN NaN NaN
140198 NaN NaN NaN NaN NaN NaN
140199 NaN NaN NaN NaN NaN NaN
140200 NaN NaN NaN NaN NaN NaN
140201 NaN NaN NaN NaN NaN NaN
140202 NaN NaN NaN NaN NaN NaN
140203 NaN NaN NaN NaN NaN NaN
140204 NaN NaN NaN NaN NaN NaN
140205 NaN NaN NaN NaN NaN NaN
lag k = 23 lag k = 24 lag k = 48 Hour_0 ... Hour_14 Hour_15 \
137354 NaN NaN NaN NaN ... NaN NaN
137355 NaN NaN NaN NaN ... NaN NaN
137356 NaN NaN NaN NaN ... NaN NaN
137357 NaN NaN NaN NaN ... NaN NaN
137358 NaN NaN NaN NaN ... NaN NaN
137359 NaN NaN NaN NaN ... NaN NaN
137360 NaN NaN NaN NaN ... NaN NaN
137361 NaN NaN NaN NaN ... NaN NaN
137362 NaN NaN NaN NaN ... NaN NaN
137363 NaN NaN NaN NaN ... NaN NaN
137364 NaN NaN NaN NaN ... NaN NaN
137365 NaN NaN NaN NaN ... NaN NaN
137366 NaN NaN NaN NaN ... NaN NaN
137367 NaN NaN NaN NaN ... NaN NaN
137368 NaN NaN NaN NaN ... NaN NaN
137369 NaN NaN NaN NaN ... NaN NaN
137370 NaN NaN NaN NaN ... NaN NaN
137371 NaN NaN NaN NaN ... NaN NaN
137372 NaN NaN NaN NaN ... NaN NaN
137373 NaN NaN NaN NaN ... NaN NaN
137374 NaN NaN NaN NaN ... NaN NaN
137375 NaN NaN NaN NaN ... NaN NaN
137376 NaN NaN NaN NaN ... NaN NaN
137377 NaN NaN NaN NaN ... NaN NaN
137378 NaN NaN NaN NaN ... NaN NaN
137379 NaN NaN NaN NaN ... NaN NaN
137380 NaN NaN NaN NaN ... NaN NaN
137381 NaN NaN NaN NaN ... NaN NaN
137382 NaN NaN NaN NaN ... NaN NaN
137383 NaN NaN NaN NaN ... NaN NaN
... ... ... ... ... ... ... ...
140176 NaN NaN NaN NaN ... NaN NaN
140177 NaN NaN NaN NaN ... NaN NaN
140178 NaN NaN NaN NaN ... NaN NaN
140179 NaN NaN NaN NaN ... NaN NaN
140180 NaN NaN NaN NaN ... NaN NaN
140181 NaN NaN NaN NaN ... NaN NaN
140182 NaN NaN NaN NaN ... NaN NaN
140183 NaN NaN NaN NaN ... NaN NaN
140184 NaN NaN NaN NaN ... NaN NaN
140185 NaN NaN NaN NaN ... NaN NaN
140186 NaN NaN NaN NaN ... NaN NaN
140187 NaN NaN NaN NaN ... NaN NaN
140188 NaN NaN NaN NaN ... NaN NaN
140189 NaN NaN NaN NaN ... NaN NaN
140190 NaN NaN NaN NaN ... NaN NaN
140191 NaN NaN NaN NaN ... NaN NaN
140192 NaN NaN NaN NaN ... NaN NaN
140193 NaN NaN NaN NaN ... NaN NaN
140194 NaN NaN NaN NaN ... NaN NaN
140195 NaN NaN NaN NaN ... NaN NaN
140196 NaN NaN NaN NaN ... NaN NaN
140197 NaN NaN NaN NaN ... NaN NaN
140198 NaN NaN NaN NaN ... NaN NaN
140199 NaN NaN NaN NaN ... NaN NaN
140200 NaN NaN NaN NaN ... NaN NaN
140201 NaN NaN NaN NaN ... NaN NaN
140202 NaN NaN NaN NaN ... NaN NaN
140203 NaN NaN NaN NaN ... NaN NaN
140204 NaN NaN NaN NaN ... NaN NaN
140205 NaN NaN NaN NaN ... NaN NaN
Hour_16 Hour_17 Hour_18 Hour_19 Hour_20 Hour_21 Hour_22 Hour_23
137354 NaN NaN NaN NaN NaN NaN NaN NaN
137355 NaN NaN NaN NaN NaN NaN NaN NaN
137356 NaN NaN NaN NaN NaN NaN NaN NaN
137357 NaN NaN NaN NaN NaN NaN NaN NaN
137358 NaN NaN NaN NaN NaN NaN NaN NaN
137359 NaN NaN NaN NaN NaN NaN NaN NaN
137360 NaN NaN NaN NaN NaN NaN NaN NaN
137361 NaN NaN NaN NaN NaN NaN NaN NaN
137362 NaN NaN NaN NaN NaN NaN NaN NaN
137363 NaN NaN NaN NaN NaN NaN NaN NaN
137364 NaN NaN NaN NaN NaN NaN NaN NaN
137365 NaN NaN NaN NaN NaN NaN NaN NaN
137366 NaN NaN NaN NaN NaN NaN NaN NaN
137367 NaN NaN NaN NaN NaN NaN NaN NaN
137368 NaN NaN NaN NaN NaN NaN NaN NaN
137369 NaN NaN NaN NaN NaN NaN NaN NaN
137370 NaN NaN NaN NaN NaN NaN NaN NaN
137371 NaN NaN NaN NaN NaN NaN NaN NaN
137372 NaN NaN NaN NaN NaN NaN NaN NaN
137373 NaN NaN NaN NaN NaN NaN NaN NaN
137374 NaN NaN NaN NaN NaN NaN NaN NaN
137375 NaN NaN NaN NaN NaN NaN NaN NaN
137376 NaN NaN NaN NaN NaN NaN NaN NaN
137377 NaN NaN NaN NaN NaN NaN NaN NaN
137378 NaN NaN NaN NaN NaN NaN NaN NaN
137379 NaN NaN NaN NaN NaN NaN NaN NaN
137380 NaN NaN NaN NaN NaN NaN NaN NaN
137381 NaN NaN NaN NaN NaN NaN NaN NaN
137382 NaN NaN NaN NaN NaN NaN NaN NaN
137383 NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ...
140176 NaN NaN NaN NaN NaN NaN NaN NaN
140177 NaN NaN NaN NaN NaN NaN NaN NaN
140178 NaN NaN NaN NaN NaN NaN NaN NaN
140179 NaN NaN NaN NaN NaN NaN NaN NaN
140180 NaN NaN NaN NaN NaN NaN NaN NaN
140181 NaN NaN NaN NaN NaN NaN NaN NaN
140182 NaN NaN NaN NaN NaN NaN NaN NaN
140183 NaN NaN NaN NaN NaN NaN NaN NaN
140184 NaN NaN NaN NaN NaN NaN NaN NaN
140185 NaN NaN NaN NaN NaN NaN NaN NaN
140186 NaN NaN NaN NaN NaN NaN NaN NaN
140187 NaN NaN NaN NaN NaN NaN NaN NaN
140188 NaN NaN NaN NaN NaN NaN NaN NaN
140189 NaN NaN NaN NaN NaN NaN NaN NaN
140190 NaN NaN NaN NaN NaN NaN NaN NaN
140191 NaN NaN NaN NaN NaN NaN NaN NaN
140192 NaN NaN NaN NaN NaN NaN NaN NaN
140193 NaN NaN NaN NaN NaN NaN NaN NaN
140194 NaN NaN NaN NaN NaN NaN NaN NaN
140195 NaN NaN NaN NaN NaN NaN NaN NaN
140196 NaN NaN NaN NaN NaN NaN NaN NaN
140197 NaN NaN NaN NaN NaN NaN NaN NaN
140198 NaN NaN NaN NaN NaN NaN NaN NaN
140199 NaN NaN NaN NaN NaN NaN NaN NaN
140200 NaN NaN NaN NaN NaN NaN NaN NaN
140201 NaN NaN NaN NaN NaN NaN NaN NaN
140202 NaN NaN NaN NaN NaN NaN NaN NaN
140203 NaN NaN NaN NaN NaN NaN NaN NaN
140204 NaN NaN NaN NaN NaN NaN NaN NaN
140205 NaN NaN NaN NaN NaN NaN NaN NaN
[2852 rows x 33 columns]
Checking the first row gives:
display((X_test.loc[[137354]].isnull().any()))
lag k = -1 False
lag k = -2 False
lag k = -3 False
lag k = 1 False
lag k = 2 False
lag k = 3 False
lag k = 23 False
lag k = 24 False
lag k = 48 False
Hour_0 False
Hour_1 False
Hour_2 False
Hour_3 False
Hour_4 False
Hour_5 False
Hour_6 False
Hour_7 False
Hour_8 False
Hour_9 False
Hour_10 False
Hour_11 False
Hour_12 False
Hour_13 False
Hour_14 False
Hour_15 False
Hour_16 False
Hour_17 False
Hour_18 False
Hour_19 False
Hour_20 False
Hour_21 False
Hour_22 False
Hour_23 False
dtype: bool
Hence, I don't understand why my models say I am feeding NaN or why the above lines of code indicates there are NaNs in the dataset.
Appreciate any feedback
Thanks!