यदि सूची समझ के लिए बयान तर्क त्रुटि

वोट
0

मैं गुणा करने के लिए कोशिश कर रहा हूँ -1 सारा श्रेय शुल्क है, जबकि डेबिट रखने एक ही सूची समझ का उपयोग कर लेता है लेकिन, अगर समारोह को नजरअंदाज कर दिया गया था। मुझे लगता है कि यहां एक सिंटैक्स त्रुटि है if transactions['Transaction Type'] is debit, लेकिन मैं बाहर क्यों समझ नहीं सकता।

यहाँ कोड है

transactions['Value'] = [i if transactions['Transaction Type'] is debit else i*-1 for i in transactions['Amount']]

print(transactions.loc[:, ['Amount','Transaction Type','Value']])

परिणाम पर मूल्य सभी मान ऋणात्मक:

             Amount Transaction Type    Value
Date                                         
2018-12-06    19.57            debit   -19.57
2018-12-06    27.87            debit   -27.87
2018-12-06     6.25            debit    -6.25
2018-12-06    14.38            debit   -14.38
2018-12-06    15.60            debit   -15.60
...             ...              ...      ...
2019-11-30    10.59            debit   -10.59
2019-11-30    51.32            debit   -51.32
2019-11-30   634.51           credit  -634.51
2019-12-01  4432.00            debit -4432.00
2019-12-01     5.00            debit    -5.00
02/12/2019 को 23:52
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

वहाँ में दो समस्याएं हैं if transactions['Transaction Type'] is "debit"भाग के रूप में आप पर शक।

सबसे पहले, का उपयोग कर isजांच करता है कि दो वस्तुओं रहे हैं एक ही वस्तु , नहीं तो वे बराबर हैं।

दूसरा, transactions['Transaction Type']सबसे अधिक संभावना एक सूची (या कम से सूची की तरह पर), आपके सवाल में अन्य जानकारी पर आधारित है। यहां तक कि अगर आप उपयोग कर रहे थे ==जैसे आप होना चाहिए, यह अभी भी होगा False, क्योंकि एक सूची एक स्ट्रिंग के बराबर होना कभी नहीं होगा।

उसके बाद, आप में मूल्यों पुनरावृत्ति कर रहे हैं transactions['Values'], लेकिन केवल कभी की तुलना में transactions['Transaction Type']प्रवेश (जो फिर से, एक सूची है)। ताकि आप सही राशि के साथ लेन-देन प्रकार तुलना कर रहे हैं आप एक ही समय में पुनरावृति दोनों की जरूरत है:

transactions['Value'] = [
    i if j == "debit" else i * -1
    for i, j in zip(transactions['Amount'], transactions['Transaction Type'])
]
03/12/2019 को 00:03
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more