मैं पंडों में एक कॉलम को एकाधिक करना चाहता हूं और पुराने मान को गणना किए गए मान से प्रतिस्थापित करना चाहता हूं।

उदाहरण :

EURUSD = 2
print(df)

           Instrument      Price,
  1         BTC/EUR        40000
  2         ETH/EUR        3000         
  3         SOL/USD        3200
  4         ADA/EUR        2.2 
  5         DOT/USD        29

)  

यदि उपकरण "EUR" से समाप्त होता है, तो मैं कीमत को USD में बदलने के लिए विनिमय दर EURUSD से मूल्य को गुणा करना चाहूंगा।

परिणाम होगा:

print(df)

           Instrument      Price,
  1         BTC/EUR        80000
  2         ETH/EUR        6000         
  3         SOL/USD        3200
  4         ADA/EUR        4.4
  5         DOT/USD        29

)  

मैंने निम्नलिखित कोड की कोशिश की:

df.loc[df["Instrument"].str[-3:] == "EUR",df["Price"]]=df["Price"]*EURUSD
-1
Stefan Hanssen 6 जिंदा 2022, 18:41

2 जवाब

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

आप np.where का इस्तेमाल Series.str.contains:

In [167]: import numpy as np

# Check whether the 'Instrument' value contains 'EUR', if TRUE then PRICE * 2, otherwise leave PRICE as is. 
In [168]: df['Price'] = np.where(df.Instrument.str.contains('EUR'), df.Price.mul(2), df.Price)

In [169]: df
Out[169]: 
  Instrument    Price
1    BTC/EUR  80000.0
2    ETH/EUR   6000.0
3    SOL/USD   3200.0
4    ADA/EUR      4.4
5    DOT/USD     29.0
1
Mayank Porwal 6 जिंदा 2022, 18:46
आपकी मदद के लिए धन्यवाद लेकिन मेरे पास निम्न त्रुटि संदेश है df['Price'] = np.where(df.Instrument.str.contains('EUR'), df.Price.mul(2)) File "<__array_function__ internals>", line 5, in where ValueError: either both or neither of x and y should be given
 – 
Stefan Hanssen
6 जिंदा 2022, 18:56
आप अपूर्ण कमांड टाइप कर रहे हैं। कृपया मेरी np.where कमांड को ठीक से कॉपी करें। आप वहां अंतिम , df.Price खो रहे हैं।
 – 
Mayank Porwal
6 जिंदा 2022, 19:00
1
आपकी मदद के लिए बहुत बहुत धन्यवाद! यह पूरी तरह से काम कर रहा है
 – 
Stefan Hanssen
6 जिंदा 2022, 19:04

सही loc प्रारूप पास करें

df.loc[df["Instrument"].str[-3:] == "EUR","Price"] = df["Price"]*EURUSD
df
Out[419]: 
  Instrument    Price
1    BTC/EUR  80000.0
2    ETH/EUR   6000.0
3    SOL/USD   3200.0
4    ADA/EUR      4.4
5    DOT/USD     29.0
0
BENY 6 जिंदा 2022, 18:45
आपकी मदद के लिए आपको धन्यवाद लेकिन मुझे निम्न त्रुटि संदेश मिला: raise ValueError("cannot reindex from a duplicate axis") ValueError: cannot reindex from a duplicate axis
 – 
Stefan Hanssen
6 जिंदा 2022, 19:00
Df = df.reset_index (ड्रॉप = ट्रू), ऊपर करने से पहले
 – 
BENY
6 जिंदा 2022, 19:01