Group by consecutive index numbersFinding the index of an item given a list containing it in PythonAccessing the index in 'for' loops?How do I get the number of elements in a list?Using group by on multiple columnsSelect first row in each GROUP BY group?Group by in LINQUnicodeEncodeError: 'ascii' codec can't encode character u'xa0' in position 20: ordinal not in range(128)Adding new column to existing DataFrame in Python pandas“Large data” work flows using pandasApply multiple functions to multiple groupby columns
Count the number of triangles
Why military weather satellites?
“I hope he visit us more often” Why is this wrong?
What checks exist against overuse of presidential pardons in the USA?
Where does the last newline character come from in this sed's result?
How to investigate an unknown 1.5GB file named "sudo" in my Linux home directory?
Does Dovescape counter Enchantment Creatures?
Why do IR remotes influence AM radios?
How to save money by shopping at a variety of grocery stores?
How did medieval manors handle population growth? Was there room for more fields to be ploughed?
Was a six-engine 747 ever seriously considered by Boeing?
Group by consecutive index numbers
Is rebooked flight considered a delay
Why did Starhopper's exhaust plume become brighter just before landing?
Why does `buck` mean `step-down`?
Are sweatpants frowned upon on flights?
Why does Sauron not permit his followers to use his name?
Is there a word or phrase that means "use other people's wifi or Internet service without consent"?
Create a list of snaking numbers under 50,000
Is "survival" paracord with fire starter strand dangerous
In Endgame, wouldn't Stark have remembered Hulk busting out of the stairwell?
Fixing a blind bolt hole when the first 2-3 threads are ruined?
Spicing up a moment of peace
Is there an in-universe explanation given to the senior Imperial Navy Officers as to why Darth Vader serves Emperor Palpatine?
Group by consecutive index numbers
Finding the index of an item given a list containing it in PythonAccessing the index in 'for' loops?How do I get the number of elements in a list?Using group by on multiple columnsSelect first row in each GROUP BY group?Group by in LINQUnicodeEncodeError: 'ascii' codec can't encode character u'xa0' in position 20: ordinal not in range(128)Adding new column to existing DataFrame in Python pandas“Large data” work flows using pandasApply multiple functions to multiple groupby columns
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I was wondering if there is a way to groupby consecutive index numbers and move the groups in different columns. Here is an example of the DataFrame I'm using:
0
0 19218.965703
1 19247.621650
2 19232.651322
9 19279.216956
10 19330.087371
11 19304.316973
And my idea is to gruoup by sequential index numbers and get something like this:
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Ive been trying to split my data by blocks of 3 and then groupby but I was looking more about something that can be used to group and rearrange sequential index numbers.
Thank you!
python pandas numpy group-by
add a comment |
I was wondering if there is a way to groupby consecutive index numbers and move the groups in different columns. Here is an example of the DataFrame I'm using:
0
0 19218.965703
1 19247.621650
2 19232.651322
9 19279.216956
10 19330.087371
11 19304.316973
And my idea is to gruoup by sequential index numbers and get something like this:
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Ive been trying to split my data by blocks of 3 and then groupby but I was looking more about something that can be used to group and rearrange sequential index numbers.
Thank you!
python pandas numpy group-by
add a comment |
I was wondering if there is a way to groupby consecutive index numbers and move the groups in different columns. Here is an example of the DataFrame I'm using:
0
0 19218.965703
1 19247.621650
2 19232.651322
9 19279.216956
10 19330.087371
11 19304.316973
And my idea is to gruoup by sequential index numbers and get something like this:
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Ive been trying to split my data by blocks of 3 and then groupby but I was looking more about something that can be used to group and rearrange sequential index numbers.
Thank you!
python pandas numpy group-by
I was wondering if there is a way to groupby consecutive index numbers and move the groups in different columns. Here is an example of the DataFrame I'm using:
0
0 19218.965703
1 19247.621650
2 19232.651322
9 19279.216956
10 19330.087371
11 19304.316973
And my idea is to gruoup by sequential index numbers and get something like this:
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Ive been trying to split my data by blocks of 3 and then groupby but I was looking more about something that can be used to group and rearrange sequential index numbers.
Thank you!
python pandas numpy group-by
python pandas numpy group-by
asked 8 hours ago
GiuseppeGiuseppe
1016 bronze badges
1016 bronze badges
add a comment |
add a comment |
4 Answers
4
active
oldest
votes
Here is one way:
from more_itertools import consecutive_groups
final=pd.concat([df.loc[i].reset_index(drop=True)
for i in consecutive_groups(df.index)],axis=1)
final.columns=range(len(final.columns))
print(final)
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
1
I like the more_itertools solution! Thank you. With 3 answers you guys covered all the possible and elegant solutions!!
– Giuseppe
8 hours ago
add a comment |
This is a groupby
+ pivot_table
m = df.index.to_series().diff().ne(1).cumsum()
(df.assign(key=df.groupby(m).cumcount())
.pivot_table(index='key', columns=m, values=0))
1 2
key
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
add a comment |
Create a new pandas.Series
with a new pandas.MultiIndex
a = pd.factorize(df.index - np.arange(len(df)))[0]
b = df.groupby(a).cumcount()
pd.Series(df['0'].to_numpy(), [b, a]).unstack()
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Similar but with more Numpy
a = pd.factorize(df.index - np.arange(len(df)))[0]
b = df.groupby(a).cumcount()
c = np.empty((b.max() + 1, a.max() + 1), float)
c.fill(np.nan)
c[b, a] = np.ravel(df)
pd.DataFrame(c)
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
add a comment |
One way from pandas
groupby
s=df.index.to_series().diff().ne(1).cumsum()
pd.concat(x: y.reset_index(drop=True) for x, y in df['0'].groupby(s), axis=1)
Out[786]:
1 2
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f57713712%2fgroup-by-consecutive-index-numbers%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
Here is one way:
from more_itertools import consecutive_groups
final=pd.concat([df.loc[i].reset_index(drop=True)
for i in consecutive_groups(df.index)],axis=1)
final.columns=range(len(final.columns))
print(final)
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
1
I like the more_itertools solution! Thank you. With 3 answers you guys covered all the possible and elegant solutions!!
– Giuseppe
8 hours ago
add a comment |
Here is one way:
from more_itertools import consecutive_groups
final=pd.concat([df.loc[i].reset_index(drop=True)
for i in consecutive_groups(df.index)],axis=1)
final.columns=range(len(final.columns))
print(final)
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
1
I like the more_itertools solution! Thank you. With 3 answers you guys covered all the possible and elegant solutions!!
– Giuseppe
8 hours ago
add a comment |
Here is one way:
from more_itertools import consecutive_groups
final=pd.concat([df.loc[i].reset_index(drop=True)
for i in consecutive_groups(df.index)],axis=1)
final.columns=range(len(final.columns))
print(final)
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Here is one way:
from more_itertools import consecutive_groups
final=pd.concat([df.loc[i].reset_index(drop=True)
for i in consecutive_groups(df.index)],axis=1)
final.columns=range(len(final.columns))
print(final)
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
answered 8 hours ago
anky_91anky_91
23.8k5 gold badges12 silver badges29 bronze badges
23.8k5 gold badges12 silver badges29 bronze badges
1
I like the more_itertools solution! Thank you. With 3 answers you guys covered all the possible and elegant solutions!!
– Giuseppe
8 hours ago
add a comment |
1
I like the more_itertools solution! Thank you. With 3 answers you guys covered all the possible and elegant solutions!!
– Giuseppe
8 hours ago
1
1
I like the more_itertools solution! Thank you. With 3 answers you guys covered all the possible and elegant solutions!!
– Giuseppe
8 hours ago
I like the more_itertools solution! Thank you. With 3 answers you guys covered all the possible and elegant solutions!!
– Giuseppe
8 hours ago
add a comment |
This is a groupby
+ pivot_table
m = df.index.to_series().diff().ne(1).cumsum()
(df.assign(key=df.groupby(m).cumcount())
.pivot_table(index='key', columns=m, values=0))
1 2
key
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
add a comment |
This is a groupby
+ pivot_table
m = df.index.to_series().diff().ne(1).cumsum()
(df.assign(key=df.groupby(m).cumcount())
.pivot_table(index='key', columns=m, values=0))
1 2
key
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
add a comment |
This is a groupby
+ pivot_table
m = df.index.to_series().diff().ne(1).cumsum()
(df.assign(key=df.groupby(m).cumcount())
.pivot_table(index='key', columns=m, values=0))
1 2
key
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
This is a groupby
+ pivot_table
m = df.index.to_series().diff().ne(1).cumsum()
(df.assign(key=df.groupby(m).cumcount())
.pivot_table(index='key', columns=m, values=0))
1 2
key
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
answered 8 hours ago
user3483203user3483203
38.1k8 gold badges32 silver badges62 bronze badges
38.1k8 gold badges32 silver badges62 bronze badges
add a comment |
add a comment |
Create a new pandas.Series
with a new pandas.MultiIndex
a = pd.factorize(df.index - np.arange(len(df)))[0]
b = df.groupby(a).cumcount()
pd.Series(df['0'].to_numpy(), [b, a]).unstack()
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Similar but with more Numpy
a = pd.factorize(df.index - np.arange(len(df)))[0]
b = df.groupby(a).cumcount()
c = np.empty((b.max() + 1, a.max() + 1), float)
c.fill(np.nan)
c[b, a] = np.ravel(df)
pd.DataFrame(c)
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
add a comment |
Create a new pandas.Series
with a new pandas.MultiIndex
a = pd.factorize(df.index - np.arange(len(df)))[0]
b = df.groupby(a).cumcount()
pd.Series(df['0'].to_numpy(), [b, a]).unstack()
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Similar but with more Numpy
a = pd.factorize(df.index - np.arange(len(df)))[0]
b = df.groupby(a).cumcount()
c = np.empty((b.max() + 1, a.max() + 1), float)
c.fill(np.nan)
c[b, a] = np.ravel(df)
pd.DataFrame(c)
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
add a comment |
Create a new pandas.Series
with a new pandas.MultiIndex
a = pd.factorize(df.index - np.arange(len(df)))[0]
b = df.groupby(a).cumcount()
pd.Series(df['0'].to_numpy(), [b, a]).unstack()
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Similar but with more Numpy
a = pd.factorize(df.index - np.arange(len(df)))[0]
b = df.groupby(a).cumcount()
c = np.empty((b.max() + 1, a.max() + 1), float)
c.fill(np.nan)
c[b, a] = np.ravel(df)
pd.DataFrame(c)
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Create a new pandas.Series
with a new pandas.MultiIndex
a = pd.factorize(df.index - np.arange(len(df)))[0]
b = df.groupby(a).cumcount()
pd.Series(df['0'].to_numpy(), [b, a]).unstack()
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
Similar but with more Numpy
a = pd.factorize(df.index - np.arange(len(df)))[0]
b = df.groupby(a).cumcount()
c = np.empty((b.max() + 1, a.max() + 1), float)
c.fill(np.nan)
c[b, a] = np.ravel(df)
pd.DataFrame(c)
0 1
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
edited 8 hours ago
answered 8 hours ago
piRSquaredpiRSquared
177k26 gold badges195 silver badges352 bronze badges
177k26 gold badges195 silver badges352 bronze badges
add a comment |
add a comment |
One way from pandas
groupby
s=df.index.to_series().diff().ne(1).cumsum()
pd.concat(x: y.reset_index(drop=True) for x, y in df['0'].groupby(s), axis=1)
Out[786]:
1 2
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
add a comment |
One way from pandas
groupby
s=df.index.to_series().diff().ne(1).cumsum()
pd.concat(x: y.reset_index(drop=True) for x, y in df['0'].groupby(s), axis=1)
Out[786]:
1 2
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
add a comment |
One way from pandas
groupby
s=df.index.to_series().diff().ne(1).cumsum()
pd.concat(x: y.reset_index(drop=True) for x, y in df['0'].groupby(s), axis=1)
Out[786]:
1 2
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
One way from pandas
groupby
s=df.index.to_series().diff().ne(1).cumsum()
pd.concat(x: y.reset_index(drop=True) for x, y in df['0'].groupby(s), axis=1)
Out[786]:
1 2
0 19218.965703 19279.216956
1 19247.621650 19330.087371
2 19232.651322 19304.316973
answered 8 hours ago
WeNYoBenWeNYoBen
156k8 gold badges54 silver badges84 bronze badges
156k8 gold badges54 silver badges84 bronze badges
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f57713712%2fgroup-by-consecutive-index-numbers%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown