मेरे पास एक डीएफ है जो इस तरह दिखता है
मैं EndTime - StartTime
को तभी घटाना चाहता हूं जब channel
1000 हो smth इस तरह: df.loc[df['Channel'] == 1000]['X channel view time']=df['EndTime']-df['StartTime']
यह सबसे तेज़ होना चाहिए लेकिन ऐसा काम नहीं कर रहा प्रतीत होता है
def watch_time(row,channel):
val=0
if row['Channel']==channel:
val=row['EndTime']-row['StartTime']
return val
df['BTV_view_time'] = df.apply(watch_time,args=250,axis=1)
लेकिन यह बहुत धीमा है?
4 जवाब
आप इसे सभी पंक्तियों के लिए कर सकते हैं और फिर उन पंक्तियों को बदल सकते हैं जो आपके फ़िल्टर में फिट नहीं होती हैं 0
:
df['X channel view time'] = df['EndTime'] - df['StartTime']
df.loc[df['Channel'] == 1000, 'X channel view time'] = 0
तुम इतने दूर नहीं थे। सिंटैक्स है:
df.loc[df['Channel'] == 1000, 'X channel view time']=df.loc[df['Channel'] == 1000, 'EndTime']-df.loc[df['Channel'] == 1000, 'StartTime']
आप कुछ इस तरह की कोशिश कर सकते हैं:
import numpy as np
df['X channel view time'] = np.where(df['channel'] == 1000, df['EndTime'] - df['StartTime'], 0)
ध्यान दें कि आप डीएफ का एक टुकड़ा ले रहे हैं, इसलिए यह काम नहीं कर रहा है, आप ऐसा कुछ कर सकते हैं:
smaller_df = df[df['Channel'] == 1000]['EndTime']-df[df['Channel'] == 1000]['StartTime']
आप एक नया कॉलम भी बना सकते हैं:
df['subtraction'] = [0]*len(df)
df['subtraction'] = df[df['Channel'] == 1000]['EndTime']-df[df['Channel'] == 1000]['StartTime']
[0]*len(df)
को आप जो चाहते हैं उससे बदलें यदि 'चैनल' 1000 से भिन्न है
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।