Group by consecutive index numbersFinding the index of an item given a list containing it in PythonAccessing...
How can I throw a body?
What does "-1" represent in the value range for unsigned int and signed int?
RAID0 instead of RAID1 or 5, is this crazy?
In what language did Túrin converse with Mím?
Are sweatpants frowned upon on flights?
Why didn't Doc believe Marty was from the future?
Why haven't the British protested Brexit as ardently like Hong Kongers protest?
Which polygons can be turned inside out by a smooth deformation?
Count the number of triangles
Convert shapefille to KML
Group riding etiquette
What is the following VRP?
Is "survival" paracord with fire starter strand dangerous
What should be done with the carbon when using magic to get oxygen from carbon dioxide?
“I hope he visit us more often” Why is this wrong?
Coupling two 15 Amp circuit breaker for 20 Amp
Create a list of snaking numbers under 50,000
Did ancient peoples ever hide their treasure behind puzzles?
Why is "I let him to sleep" incorrect (or is it)?
Wrong Stamping of UK Visa
Why does the weaker C–H bond have a higher wavenumber than the C=O bond?
Journal published a paper, ignoring my objections as a referee
Why are JWST optics not enclosed like HST?
Why is there no Disney logo in MCU movies?
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 9 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
9 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
9 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
9 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 9 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
9 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
9 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
9 hours ago
I like the more_itertools solution! Thank you. With 3 answers you guys covered all the possible and elegant solutions!!
– Giuseppe
9 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 9 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 9 hours ago
answered 9 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 9 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