मैं किसी भी संदर्भ या समाधान के लिए लूप में प्राप्त परिणाम से नीचे सीएसवी की उच्चतम कीमत की पंक्ति कैसे प्राप्त करूं?

import pandas as pd
import numpy as np
df = pd.read_csv('/Users/caleb/ic/US_FINAL.csv',names=['ProductName', 'Year', 'Production', 'Price'])
df.set_index("ProductName",inplace=True)
products=['FortuneCookie']
for product in products:
     print(df.loc[product])
0
BPDESILVA 27 मार्च 2018, 20:13

2 जवाब

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

आप करीब थे। लेकिन df.loc[product] वह नहीं कर रहा था जो आप चाहते थे। आप df['ProductName'] == product कहां खोजना चाहते हैं, इसलिए उपसमुच्चय df.loc[df['ProductName']==product] द्वारा दिए गए हैं। बाकी सिर्फ उस पंक्ति को निर्धारित करता है जहां कीमत अधिकतम है।

for product in products:
    print(df.loc[df.Price == df[df.ProductName == product]['Price'].max()])

यदि आप इसके साथ खेलना चाहते हैं तो यहां एक पूर्ण उदाहरण दिया गया है। यदि आप इसे अपने डेटाफ़्रेम में प्रत्येक उत्पाद के लिए जनरेट करना चाहते हैं, तो आप सूची को स्पष्ट रूप से परिभाषित करने के बजाय df.ProductName.unique() का उपयोग करने पर विचार कर सकते हैं, क्योंकि आपको प्रत्येक उत्पाद को अलग-अलग निर्दिष्ट करने की आवश्यकता नहीं होगी।

import pandas as pd
df = pd.DataFrame({'ProductName': ['Sandwich', 'FortuneCookie', 'FortuneCookie', 'Sandwich'],
             'Year': [2010, 2010, 2011, 2009],
             'Production': [17, 18, 101, 17],
             'Price': [21.11, 17.82, 19.99, 20.13]})

products = df.ProductName.unique()
for product in products:
    print(df.loc[df.Price == df[df.ProductName == product]['Price'].max()])

   Price ProductName  Production  Year
0  21.11    Sandwich          17  2010
   Price    ProductName  Production  Year
2  19.99  FortuneCookie         101  2011
2
ALollz 27 मार्च 2018, 17:31

मुझे लगता है कि एक साधारण groupby फ़ंक्शन आपको प्राप्त कर सकता है:

# using data from @ALLoLz answer
df = pd.DataFrame({'ProductName': ['Sandwich', 'FortuneCookie', 'FortuneCookie', 'Sandwich'],
             'Year': [2010, 2010, 2011, 2009],
             'Production': [17, 18, 101, 17],
             'Price': [21.11, 17.82, 19.99, 20.13]})

df.groupby('ProductName')['Price'].max()

# alternative
# df.groupby('ProductName').agg({'Price':'max'})
1
YOLO 27 मार्च 2018, 17:31