/ / एक समूह वस्तु के हर nth समूह के माध्यम से पाश - अजगर, पांडा

ग्रुपबी ऑब्जेक्ट के प्रत्येक एनएच समूह के माध्यम से लूप - पायथन, पांडा

मैं वर्तमान में सामान्य तरीके से एक समूह वस्तु पर पुनरावृत्ति कर रहा हूं

for key, df_reduced in df.groupby(level="level_key"):

क्या इसके बजाय समूह में हर nth समूह के माध्यम से पुनरावृति करने का एक आसान तरीका है? उदाहरण के लिए, 1 समूह, 4 वां समूह, 7 वां समूह आदि।

ऐसा करने का एक तरीका होगा

counter = 0
for key, df_reduced in df.groupby(level="level_key"):
counter += 1
counter = counter % 3
if counter != 0:
continue

वहाँ ऐसा करने के लिए एक क्लीनर तरीका है, जैसे। एक मानक अजगर सूची के लिए मैं हर 3 आइटम पर लूप करेगा

for l in list[::3]:

उत्तर:

जवाब के लिए 2 № 1

आप कोशिश कर सकते हैं GroupBy.nth

GroupBy.nth (n, dropna = कोई नहीं) [स्रोत] यदि n एक इंट या n पंक्तियों की सूची है, तो प्रत्येक समूह से nth रो लें।

As_index = समूह में गलत बताने से मूल सूचकांक बना रहता है।

import pandas as pd
import numpy as np

df = pd.DataFrame({"A": [1, 1, 2, 1, 2],"B": [np.nan, 2, 3, 4, 5]}, columns=["A", "B"])


print "n", df.groupby("A", as_index=False).nth(1)
print "n", df.groupby("A", as_index=False).nth(2)
print "n", df.groupby("A", as_index=False).nth(0)

उत्पादन

   A    B
1  1  2.0
4  2  5.0

A    B
3  1  4.0

A    B
0  1  NaN
2  2  3.0