क्या निम्नलिखित लिखने का एक और संक्षिप्त/पायथोनिक/पांडा-मूल तरीका है?

all_pos = ['NN', 'VB', 'ADJ']
for col in all_pos:
    df_out['delta_'+col] = df_out[col] - mean_df[col] 

df_out और mean_df में समान कॉलम नाम और इंडेक्स हैं, और मैं df_out में नए कॉलम बनाना चाहता हूं जिसमें उनके बीच का अंतर हो।

तो df_out में हो सकता है

Index  NN VB ADJ

239    9  4  3
250    2  2  1

और df_mean में हो सकता है

Index  NN VB ADJ

239    3  1  8
250    7  4  3

मैं चाहता हूं कि df_out ऐसा दिखे

    Index  NN VB ADJ delta_NN delta_VB delta_ADJ

    239    9  4  3       6        3       -5
    250    2  2  1      -5       -2       -2
0
mrdatascience32 26 अगस्त 2021, 20:52

1 उत्तर

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

एक साधारण घटाव का उपयोग करें (इसे प्रति कॉलम करने की आवश्यकता नहीं है) और इनपुट और आउटपुट को संक्षिप्त करें:

pd.concat([df_out,
           (df_out - df_mean).add_prefix('delta_')
          ], axis=1)

या

df1.join((df1-df2).add_prefix('delta_'))

(df_out - df_mean) को df_out.sub(df_mean) भी लिखा जा सकता है

आउटपुट:

       NN  VB  ADJ  delta_NN  delta_VB  delta_ADJ
Index                                            
239     9   4    3         6         3         -5
250     2   2    1        -5        -2         -2

नायब। मुझे लगता है कि "इंडेक्स" इंडेक्स है, अगर पहले नहीं चलता है:

df_out.set_index('Index', inplace=True)
df_mean.set_index('Index', inplace=True)
2
mozway 26 अगस्त 2021, 21:07
1
आप df1.join((df1-df2).add_prefix('delta_')) का भी उपयोग कर सकते हैं।
 – 
Henry Yik
26 अगस्त 2021, 21:06
बहुत सच है, मैं इसे अपडेट कर दूंगा (मैं शायद ही कभी ईमानदार होने के लिए शामिल हों)। धन्यवाद!
 – 
mozway
26 अगस्त 2021, 21:06