मेरे पास डेटाफ़्रेम की एक सरणी है dfs = [df0, df1, ...]। उनमें से प्रत्येक के पास अलग-अलग आकार का एक date कॉलम है (कुछ date एक डेटाफ़्रेम में हो सकते हैं लेकिन दूसरे में नहीं)।

मैं जो करने की कोशिश कर रहा हूं वह यह है:

pd.concat(dfs).groupby("date", as_index=False).sum()

लेकिन तारीख अब एक कॉलम नहीं बल्कि एक इंडेक्स (dfs = [df.set_index("date") for df in dfs]) है।

मैंने देखा है कि आप df.index से groupby (.groupby(df.index)) पास कर सकते हैं लेकिन df.index में सभी तिथियां शामिल नहीं हो सकती हैं।

मैं यह कैसे कर सकता हूँ?

यहां लक्ष्य .sum() को groupby पर कॉल करना है, इसलिए मैं groupby का उपयोग करने के लिए बाध्य नहीं हूं और न ही concat ऐसा करने का कोई वैकल्पिक तरीका है।

0
Saturnix 22 सितंबर 2019, 18:37

1 उत्तर

सबसे बढ़िया उत्तर

अगर मैं समझने में सक्षम हूं तो शायद आप ऐसा कुछ चाहते हैं:

df = pd.concat([dfs])
df.groupby(df.index).sum()

यहाँ छोटा उदाहरण है:

tmp1 = pd.DataFrame({'date':['2019-09-01','2019-09-02','2019-09-03'],'value':[1,1,1]}).set_index('date')
tmp2 = pd.DataFrame({'date':['2019-09-01','2019-09-02','2019-09-04','2019-09-05'],'value':[2,2,2,2]}).set_index('date')
df = pd.concat([tmp1,tmp2])
df.groupby(df.index).sum()
1
milos.ai 22 सितंबर 2019, 18:56