मैं वर्तमान में सामान्य तरीके से एक समूह वस्तु पर पुनरावृत्ति कर रहा हूं
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