how to pivot dataframe to square matrix in pandas - python

I don't know how i pivot table in picture one to square matrix in table 2.
Value is distinct count anonymous_id
Want to know how many users join in event voucher denied and item_checkout_started, etc. ?
Thanks!

pivot require 3 argumnts:
index (anonymous_id) - in this case
column - Column to use to make new frame’s columns.
values - Column(s) to use for populating new frame’s values.
df.pivot(index=["anonymous_id"], columns=["list_event_n"],values="at")

You can try .pivot_table() with aggfunc='count' to count the number of occurrences of anonymous_id, as folllows:
df.pivot_table(index='list_event_n', columns='list_event_n', values='anonymous_id', aggfunc='count')
Result:
list_event_n item_checkout_started item_viewed outlet_list_viewed outlet_product_clicked outlet_promo_clicked popup_registered popup_viewed product_clicked product_list_viewed product_searched product_viewed promotion_viewed item_checkout_started item_viewed outlet_list_viewed outlet_product_clicked outlet_promo_clicked popup_registered popup_viewed product_clicked product_list_viewed product_searched product_viewed promotion_viewed
list_event_n
item_checkout_started 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
item_viewed NaN 15.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 15.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
outlet_list_viewed NaN NaN 2.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
outlet_product_clicked NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN NaN
outlet_promo_clicked NaN NaN NaN NaN 7.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 7.0 NaN NaN NaN NaN NaN NaN NaN
popup_registered NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
popup_viewed NaN NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.0 NaN NaN NaN NaN NaN
product_clicked NaN NaN NaN NaN NaN NaN NaN 17.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 17.0 NaN NaN NaN NaN
product_list_viewed NaN NaN NaN NaN NaN NaN NaN NaN 7.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 7.0 NaN NaN NaN
product_searched NaN NaN NaN NaN NaN NaN NaN NaN NaN 2.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2.0 NaN NaN
product_viewed NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 16.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 16.0 NaN
promotion_viewed NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2.0

Related

Problem in removing a list of nan from Pandas dataframe using Python

I have a dataframe which has 4 columns- Name, Size, Text Extracted, Score.
The score column contains a list with nan in it
something like this
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan]
Here's how my dataframe looks like
Image Name Image Dimensions Text Extracted score
SGAFIS2457_1_1.jpg (1260, 1585, 3) "[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan]"
SGAFIS2457_1_2.jpg (1235, 1595, 3) "[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan]"
SGAFIS2457_2_1.jpg (1402, 1668, 3) FIS GLOBAL SUSTAINABILITY REPORT TABLE OF CONTENTS INTRODUCTION SUSTAINABLE PLANET I LETTER FROM OUR CHAIRMAN AND CEO REDUCING ENVIRONMENTAL IMPACT II ABOUT FIS III REPORT HIGHLIGHTS SUSTAINABLE GOVERNANCE IV APPROACH TO SUSTAINABLE GROWTH V RESPONSE TO COVID GOVERNANCE OVERSIGHT STRUCTURE AND RESOURCES SUSTAINABLE SOCIETIES RISK MANAGEMENT OPERATIONAL RESILIENCY AND COMPLIANCE EMPOWERING INDIVIDUALS AND MANAGING A SUSTAINABLY BUSINESSES IN THE DIGITAL ECONOMY FOCUSED SUPPLY CHAIN PROTECTING OUR CLIENTS AND THE FINANCIAL SYSTEM APPENDIX ADVANCING THE WORKFORCE OF THE FUTURE CONTENT INDEXES FOSTERING INCLUSION DIVERSITY HELPING COMMUNITIES THRIVE INTRODUCTION 0.384155154
/content/keras-retinanet/PDFs/KPI1/Cropped_images/KPI1_SGAFIS2457_7_1.jpg (1105, 865, 3) MATRIX OF MATERIAL TOPICS Local Communities Training and Education Diversity Equal Opportunity Indirect Economic Impacts Ethics and Integrity Employment Data Privacy and Security Governance Customer Privacy Access to Economic Finance Performance Procurement Indirect Energy Economic Impacts Practices Anti Corruption Business Continuity Anti Competitive Behavior Public Policy INCREASING IMPORTANCE INDUSTRY PERSPECTIVES SUSTAINABLE SUSTAINABLE SUSTAINABLE SOCIETIES PLANET GOVERNANCE EXTERNAL STAKEHOLDERS PERSPECTIVES 0.352203667
SGAALDAR DH_44_1.jpg (758, 1147, 3) GRI "[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan]"
SGAALDAR DH_96_1.jpg (1266, 2316, 3) "[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan]"
For your reference I'm also attaching a screenshot of the it here
I've tried multiple ways of removing the whole row where the nan in list is present but none of them worked so far. Here's a snippet of code which I tried would solve it but it did not work.
dfKPI = dfKPI[~dfKPI['score'].isin(garb)]
here garb is nothing but the list shared above.
I'm stuck on this problem for a good two days and have researched and tried out multiple things.
From the look of it, it seems that your score column has usually a numerical result, but sometimes has a string containing "[nan nan nan ...]" rather than a list of nan.
One simple way to clean this up (here assuming an original DataFrame called df) is:
df_new = df.assign(score=pd.to_numeric(df['score'], errors='coerce'))
Optionally, you can drop all rows with nan (either resulting from the 'coerce' above, or originally nan):
df_new = (
df
.assign(score=pd.to_numeric(df['score'], errors='coerce'))
.dropna(subset='score')
)

Beautifulsoup not returning complete HTML of the webpage

I have been trying to get the entire html text of this website.
It only returns the outermost content and all the inner main content of the website is not in it..
import requests
from bs4 import BeautifulSoup
html_text = requests.get('https://oldschool.tools/calculators/quest-planner#').text
soup = BeautifulSoup(html_text, 'html.parser')
print(soup.prettify())
Any support regarding this would be appreciated.
The data is stored inside javascript variable on that page. To parse the data (and create pandas dataframe form it) you can use this example:
import re
import json
import requests
import pandas as pd
url = "https://oldschool.tools/calculators/quest-planner#"
html = requests.get(url).text
data = re.search(r"window\.questData = ({.*})", html).group(1)
data = json.loads(data)
# uncomment this to print all data:
# print(json.dumps(data, indent=4))
df = pd.json_normalize(data.values())
df.index = data.keys()
print(df)
Prints:
name difficulty length qp skillRequirements questRequirements qpRequirement membersOnly skillRequirements.mining skillRequirements.crafting skillRequirements.woodcutting skillRequirements.cooking skillRequirements.fishing skillRequirements.herblore skillRequirements.prayer skillRequirements.smithing skillRequirements.magic skillRequirements.thieving skillRequirements.ranged skillRequirements.attack skillRequirements.firemaking skillRequirements.agility skillRequirements.fletching skillRequirements.strength skillRequirements.defence skillRequirements.slayer skillRequirements.farming skillRequirements.runecrafting skillRequirements.wooductting skillRequirements.construction skillRequirements.hunter skillRequirements.hitpoints
1 Cook's Assistant Novice Short 1 [] [] NaN 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
2 Demon Slayer Novice Medium 3 [] [] NaN 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
3 The Restless Ghost Novice Short 1 [] [] NaN 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
4 Romeo & Juliet Novice Short 5 [] [] NaN 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
5 Sheep Shearer Novice Short 1 [] [] NaN 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
6 Shield of Arrav Novice Medium 1 [] [] NaN 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
7 Ernest the Chicken Novice Short 4 [] [] NaN 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
8 Vampyre Slayer Novice Short 3 [] [] NaN 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
9 Imp Catcher Novice Short 1 [] [] NaN 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
10 Prince Ali Rescue Novice Short 3 [] [] NaN 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
11 Doric's Quest Novice Short 1 NaN [] NaN 0 15.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 Black Knights' Fortress Novice Short 3 [] [] 12.0 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
13 Witch's Potion Novice Short 1 [] [] NaN 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
...and so on.

How to calculate CDF in python Dataframe

I have below Dataframe:
DP1 DP2 DP3 DP4 DP5 DP6 ... DP13 DP14 DP15 DP16 DP17 DP18
OP1 NaN NaN NaN NaN NaN 1.984582 ... NaN 7.445081 NaN NaN NaN NaN
OP2 NaN 3.352522 1.947486 0.833274 2.085060 0.898013 ... -2.156338 0.862895 1.150826 inf NaN NaN
OP3 11.650615 2.202162 1.724781 2.355730 1.308264 0.977641 ... 1.675422 1.030201 1.192028 NaN NaN NaN
OP4 16.977332 2.168358 1.216076 0.910061 2.024265 0.910230 ... 2.930730 1.304237 NaN NaN NaN NaN
OP5 12.872961 1.512182 2.044515 0.390772 0.900004 1.011990 ... -1.087320 NaN NaN NaN NaN NaN
OP6 NaN 1.348129 1.475396 0.153781 1.910459 0.839901 ... NaN NaN NaN NaN NaN NaN
OP7 NaN 1.793057 0.814527 2.277154 1.257133 1.032616 ... NaN NaN NaN NaN NaN NaN
OP8 NaN 0.232742 2.726803 0.969646 1.227970 0.375313 ... NaN NaN NaN NaN NaN NaN
OP9 NaN -0.822340 1.966493 1.147438 NaN NaN ... NaN NaN NaN NaN NaN NaN
OP10 NaN 0.207764 0.577137 1.531194 1.243140 0.799128 ... NaN NaN NaN NaN NaN NaN
OP11 NaN NaN NaN NaN 3.019366 NaN ... NaN NaN NaN NaN NaN NaN
OP12 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
OP13 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
OP14 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
OP15 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
OP16 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
OP17 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
OP18 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
Weighted Avg 14.175524 1.914653 1.491014 1.261061 1.464702 0.937948 ... 0.605240 0.945967 0.576550 inf 1.0 1.0
CDF NaN -inf -inf -inf -inf -inf ... -inf inf inf inf NaN NaN
Here I calculated Weighted average and I am trying to calculate CDF but returns Nan and -inf values.
code to calculate CDF i used:
c = ResampledDF.iloc[1][::-1].cumprod()[::-1]
ResampledDF = ResampledDF.append(pd.Series(c,name='CDF'))
Solution with remove missing values with infinitive values is:
c = ResampledDF.iloc[1][::-1].replace(np.inf, np.nan).dropna().cumprod()
ResampledDF = ResampledDF.append(c.rename('CDF'))

Get lines Pandas with groupby ignoring NaNs

I need to get rows in my dataframe (using .last_valid_index()), but some of the indices which satisfy the condition are NaN (that's fine, as I may have some empty blocks between the cuts).
df.groupby('cuts').apply(lambda x: x.q1.last_valid_index())
Out[289]:
cuts
(2016-04-29 23:59:59.999999999, 2016-05-14] 13.0
(2016-05-14, 2016-05-28] 19.0
(2016-05-28, 2016-06-11] NaN
(2016-06-11, 2016-06-25] NaN
(2016-06-25, 2016-07-09] NaN
(2016-07-09, 2016-07-23] 75.0
(2016-07-23, 2016-08-06] NaN
(2016-08-06, 2016-08-20] NaN
(2016-08-20, 2016-09-03] NaN
(2016-09-03, 2016-09-17] 138.0
(2016-09-17, 2016-10-01] NaN
(2016-10-01, 2016-10-15] 156.0
(2016-10-15, 2016-10-29] NaN
I need to get rid of NaNs, I tried something like:
df.groupby('cuts').apply(lambda x: x.loc[x.q1.last_valid_index()] if (x.q1.last_valid_index() > 0)
but it didn't work.
I'm sure it should be very simple, but I'm struggling to find a neat solution.
EDIT
df[:50]
Out[305]:
response_date q1 crp ferritin hb q2 plasma platelets transferrin q3 wcc value a1 a2 a3 a4
0 2016-04-27 34.0 6.1 15.3 136.0 NaN 1.0 404.0 27.0 NaN 9.33 NaN NaN NaN NaN NaN
1 2016-04-30 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 12.0 0.98 80.0 1.0
2 2016-05-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1089.0 NaN NaN NaN NaN
3 2016-05-02 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 2016-05-03 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 2016-05-04 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 2016-05-05 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 2016-05-06 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
8 2016-05-07 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 2016-05-08 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
10 2016-05-09 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
11 2016-05-10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 2016-05-11 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
13 2016-05-12 38.0 1.1 11.1 135.0 4.0 1.0 382.0 18.0 5.0 10.60 NaN NaN NaN NaN NaN
14 2016-05-13 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
15 2016-05-14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 12.0 0.83 80.0 1.0
16 2016-05-15 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
17 2016-05-16 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
18 2016-05-17 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19 2016-05-18 36.0 8.8 15.6 138.0 NaN NaN 369.0 23.0 NaN 9.78 NaN NaN NaN NaN NaN
20 2016-05-19 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
21 2016-05-20 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
22 2016-05-21 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
23 2016-05-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
24 2016-05-23 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
25 2016-05-24 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
26 2016-05-25 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
27 2016-05-26 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
28 2016-05-27 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
29 2016-05-28 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 14.0 1.60 80.0 1.0
30 2016-05-29 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
31 2016-05-30 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
32 2016-05-31 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
33 2016-06-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
34 2016-06-02 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 802.0 NaN NaN NaN NaN
35 2016-06-03 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
36 2016-06-04 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
37 2016-06-05 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
38 2016-06-06 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
39 2016-06-07 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
40 2016-06-08 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
41 2016-06-09 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
42 2016-06-10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
43 2016-06-11 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 13.0 1.40 75.0 1.0
44 2016-06-12 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
45 2016-06-13 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
46 2016-06-14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
47 2016-06-15 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
48 2016-06-16 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
49 2016-06-17 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
I need to extract data (blood results) between the dates of a1. I'm usind pd.cut, to get blocks between the dates of a1. If you notice, within some block of a1, there are not blood results, so this is how I got NaN previously. I need to get only rows with bloods between the dates of a1. However, there are might be more than one set of bloods between the dates, so this is why I'm taking the last set of results, which is closer to the end of the a1 block.

Complete the index and columns in pandas(DataFrame)?

Here is a datafrmae.
a = pd.DataFrame({'a':np.arange(10)}, index=np.arange(0,20,2))
# then I can create new dataframe and complete the index.
b = pd.DataFrame(index=np.arange(20))
b['a'] = a
# Now convert the index np.arange(0,20,2) to np.arange(20). Fill noexists value by np.nan.
But how can i do the same way to column? Suppose the column's dtype is int32 and names is np.arange(0,20,2).
It seems you need reindex:
print (a.reindex(b.index))
a
0 0.0
1 NaN
2 1.0
3 NaN
4 2.0
5 NaN
6 3.0
7 NaN
8 4.0
9 NaN
10 5.0
11 NaN
12 6.0
13 NaN
14 7.0
15 NaN
16 8.0
17 NaN
18 9.0
19 NaN
Also can reindex columns:
a.columns = [0]
print (a.reindex(index=b.index, columns=np.arange(0,20,2)))
0 2 4 6 8 10 12 14 16 18
0 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 2.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 3.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
8 4.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
10 5.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
11 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 6.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
13 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
14 7.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
15 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
16 8.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
17 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
18 9.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
19 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

Categories