Home » How to transform given dataset in python? [closed]

# How to transform given dataset in python? [closed]

## Solutons:

From your expected result, it appears that each “group” is based on contiguous `id` values. For this, you can use the compare-cumsum-groupby pattern, and then use `agg` to get the `min` and `max` values.

``````# Sample data.
df = pd.DataFrame(
{'id': [1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1],
'A': [0.0, 6.4, 27.0, 27.1, 27.4, 27.7, 30.6, 31.0, 36.6, 36.9, 37.1, 37.1, 37.3, 37.8, 38.9, 39.2, 39.3, 39.5, 39.7, 42.6, 42.6, 42.8, 44.9, 45.6, 51.0],
'B': [6.4, 27.0, 27.1, 27.4, 27.7, 30.6, 31.0, 36.6, 36.9, 37.1, 37.1, 37.3, 37.8, 38.9, 39.2, 39.3, 39.5, 39.7, 42.6, 42.6, 42.8, 44.9, 45.6, 51.0, 51.8]}
)

# Solution.
>>> (df
.groupby(df['id'].ne(df['id'].shift()).cumsum())
.agg({'id': 'first', 'A': 'min', 'B': 'max'})
.set_index('id'))
A     B
id
1    0.0   6.4
2    6.4  30.6
1   30.6  39.7
2   39.7  42.8
1   42.8  45.6
2   45.6  51.0
1   51.0  51.8
``````

It seems data are not numeric, so first change them to numeric and then use `GroupBy.agg` with named aggregation working in pandas 0.25+:

``````df[['b','c']] = df[['b','c']].astype(float)
df1 = (df.groupby('a').agg(min_b=('b','min'),
max_b=('b','max'),
min_c=('c','min'),
max_c=('c','max'))
.reset_index())
print (df1)
a  min_b  max_b  min_c  max_c
0  1    0.0   51.0    6.4   51.8
1  2    6.4   45.6   27.0   51.0
``````

Setup:

``````   a             b             c
0  1           0.0   6.400000000
1  2   6.400000000          27.0
2  2          27.0  27.100000000
3  2  27.100000000  27.400000000
4  2  27.400000000  27.700000000
...
...
...
``````

If need each groups separately:

``````df[['b','c']] = df[['b','c']].astype(float)
df1 = (df.groupby(df['a'].ne(df['a'].shift()).cumsum())
.agg(a=('a','first'),
min_b=('b','min'),
max_b=('b','max'),
min_c=('c','min'),
max_c=('c','max'))
.reset_index(drop=True))
print (df1)
a  min_b  max_b  min_c  max_c
0  1    0.0    0.0    6.4    6.4
1  2    6.4   27.7   27.0   30.6
2  1   30.6   39.5   31.0   39.7
3  2   39.7   42.6   42.6   42.8
4  1   42.8   44.9   44.9   45.6
5  2   45.6   45.6   51.0   51.0
6  1    0.0   51.0    6.4   51.8
7  2    6.4    6.4   30.6   30.6
8  1   30.6   30.6   39.5   39.5
``````

## Performance issue with this code [closed]

In short: You should create,open,use,close,dispose Connections where you're using them. The best way is to use the using-statement. By not closing the connection as soon as possible, the Connection-Pool needs to create new physical connections to the dbms which...

## Compare a pointer to an integer in C [closed]

Here's what I think you meant to post, it still doesn't compile though, since you can't compare a pointer to a char /* *Description: Construction of a social network */ #include <stdio.h> #include <strings.h> #include <stdlib.h> #define SIZE...

## Autocomplete json in textbox

If you are using jQuery UI, the jQuery documentation on autocomplete is straightforward. Put your array as the source: and it should work automatically. IMHO, You seriously need to spend some time for googling and looking into the documentations. jQuery UI...

## Handling pairs of pattern matching in multiple excel files through VB macros

my assumptions: Excel_In1.xls == catalog.xlsx (table has unique key pair columnA & columnB in each row) Excel_In2.xls == factdata.xlsx (table has multiple duplicate key pairs; and contains data in fixed columns to be copied) Excel_Out.xls == book Out.xlsm...

## having all my scores and names in one big array

You need to initialize your array outside of your loop: name_arr = [] while int(students)>int(student): name = input ("what is your name ") score = input ("what is your score ") student = student + 1 name_arr.append(name) name_arr.append(score)...

## Execute a specific command in a given directory without cd’ing to it?

I don't know if this counts, but you can make a subshell: \$ (cd /var/log && cp -- *.log ~/Desktop) The directory is only changed for that subshell, so you avoid the work of needing to cd - afterwards. Not to undermine the value of answers given by other...

## pacman “exists on filesystem” error

After pacman finally deprecated the --force option and made the surrogate --overwrite option work as expected, the following usage pattern should be noted. A command to reproduce the --force option that blindly overwrites anything that conflicts is this: sudo...

## How to determine the maximum number to pass to make -j option?

nproc gives the number of CPU cores/threads available, e.g. 8 on a quad-core CPU supporting two-way SMT. The number of jobs you can run in parallel with make using the -j option depends on a number of factors: the amount of available memory the amount of memory...

## Number of Nearest ‘True’ in a matrix or list of list

Definitely not the best way to do it, but it's one that works: import numpy as np mas1 = np.array([[True, False, True], [ False, True, True], [ False, True, False]]) mas_answer = np.ndarray(shape=mas1.shape) for i in range(mas1.shape[0]): for j in...

## Trying to display Json data from a web url into a table

You can take this json and put it in the loop through length of the json and show data into the table. This is how i solved it <?php try{ \$url="the json url goes here"; // path to your JSON file \$data = file_get_contents(\$url); // put the contents of the...

## View v is unreachable statement

Anything else is written after the return keyword it's unreachable. Remove return super.getView(position, convertView, parent); from the first line of your function. This is a warning, telling you that static analysis of the code shows that some of your code...

## index out of range but is in fact in range [closed]

Well try to debug your code by yourself first. Anyhow for your question Why is this happening? : It gives you error in postCode = split_address[4] because your list has 4 elements 0,1,2,3 and you are accessing the 4th element which is not present.. you don't...

## Ubuntu update error: “waiting for unattended-upgr to exit”

I would first try a softer way. Stop the automatic updater. sudo dpkg-reconfigure -plow unattended-upgrades At the first prompt, choose not to download and install updates. Make a reboot. Make sure any packages in an unclean state are installed correctly. sudo...

## how to Styling classes with the same name in a file css [closed]

You need to use :nth-of-type(n) selector. // For First Right Class Div #container .right:nth-of-type(1) { } // For First Left Class Div #container .left:nth-of-type(1) { } Hence for every div you need to change n value. Your question is extremely unclear but I...

## Java – different parameters resulting to different outputs

What I think you're trying to achieve is that when you call your method "horn" with some parameter it has to either use "Beep!" or "Boop!". First of: void horn(a,b) Is not a valid function signature in Java, in a java function you always have to specify what...

## Cannot use method returned value into another method

Using @super's suggestion and a little warning fixing. The two important changes are in the line as suggested by @super: printf("r=%.3f; phi=%.3fn",distanta(),phi()); The variables 'r' and 'unghi' are both variables local to member functions and cannot be...

## Class has no member speak? [closed]

void::speak(); //THE GLOBAL SCOPE HAS NO SPEAK It's interpreting this as void ::speak() where leading an identifier (a name) with :: indicates to C++, "Look in the global scope of all names". :: is the "scope resolution operator" In the header file, you should...

## Convert code with multiple lines into one line

Read the docs! A simple statement is comprised within a single logical line. Several simple statements may occur on a single line separated by semicolons. Search Stack Overflow! How to put multiple statements in one line? Or google, to find converters for more...

## How to POSITION my Marker to Always Follow the Slider-Handle?

Youc can set a position to image using Jquery See fiddle //set a begining position to img var slider = \$(".slider")[0]; var sliderPos = slider.value / slider.max; var pixelPostion = slider.clientWidth * sliderPos; \$(".img").css("left",pixelPostion-7 + "px");...

## css nth-child() check board pattern [closed]

This is pretty simple, as the pattern is repeated over 2 rows of 4, you just need to apply styles to 8n + i for the chequered pattern: .flex { display: flex; width: 400px; /* width of four squares */ flex-direction: row; flex-wrap: wrap; } .square { width:...