मेरे पास अलग-अलग पंक्ति लंबाई के साथ दो डेटाफ्रेम हैं, समान कॉलम हैं लेकिन तदनुसार व्यवस्थित नहीं हैं। मैं df1 से df2 घटाना चाहता हूं और फिर परिणाम को df1 से विभाजित करना चाहता हूं (मूल रूप से अंत में प्रतिशत प्राप्त करने के लिए)।

डीएफ1

Index       Bircher  Club   Quiche
2019-1-18     16       1     4
2019-1-19     4        9     6
2019-1-28     8        1     6
2019-1-29     4        7     6
2019-1-20     8        1     6

डीएफ2

Index       Bircher  Quiche  Club
2019-1-10     15       1     3
2019-1-18     4        1     1
2019-1-20     4        2     6
2019-1-26     2        1     5
2019-1-25     4        1     2

परिणाम: दोनों डेटाफ़्रेम में केवल दिनांक 2019-1-18 और 2019-1-20 दिखाई देते हैं और उनका उपयोग किया जा सकता है। तब Df3 को बस इस गणित सूत्र (Df1-DF2)/Df1 . के साथ व्यक्त किया जाता है

Index       Bircher  Club   Quiche
2019-1-18     75%     0%     75%
2019-1-20     50%    -100%    0%
0
MHanu 25 जिंदा 2019, 16:37

2 जवाब

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

बस मेरे सिर के ऊपर से:

# Join the tables to find common rows
merged_df = df1.join(df2, lsuffix='Left', rsuffix='Right', how='inner')

# Calculate the required percentages, column by column
for col in df1.columns:
    merged_df[col] = (merged_df[col + 'Left'] - merged_df[col + 'Right']) / merged_df[col + 'Left']

# Optionally delete all other columns except df1.columns
merged_df = merged_df.loc[:, df1.columns.values]

यह मानता है कि आप सभी स्तंभों के प्रतिशत की गणना करना चाहते हैं।

0
crazyGamer 25 जिंदा 2019, 17:42

आप Groupby और nth . का भी उपयोग कर सकते हैं

x = pd.concat([df1,df2]).groupby(level=0)

fg = ((x.nth(0) - x.nth(-1) )/x.nth(0))*100

fg[fg!= 0].dropna()
0
No_body 25 जिंदा 2019, 20:30