मैं इस डेटाफ़्रेम (['एसेट ए' 'एसेट बी' 'एसेट सी']) में प्रत्येक एसेट को कैसे प्रिंट करूं? मेरा मानना ​​​​है कि मेरा वाक्यविन्यास गलत है।

import pandas as pd

df = pd.DataFrame({
    'date': ['2019-01-01','2019-01-01','2019-01-01',
             '2019-02-01','2019-02-01','2019-02-01',
             '2019-03-01','2019-03-01','2019-03-01',
             '2019-04-01','2019-04-01','2019-04-01',
             '2019-05-01','2019-05-01','2019-05-01'],
    'Asset': ['Asset A', 'Asset B', 'Asset C', 'Asset A', 'Asset B', 'Asset C',
                'Asset A', 'Asset B', 'Asset C', 'Asset A', 'Asset B', 'Asset C',
                'Asset A', 'Asset B', 'Asset C',],
    'Monthly Value': [200, 800, 400, 400, 300, 600, 400, 400, 900,
                       300, 600, 400, 200, 100, 200],
    'Indicator': [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0]
})

print(df.sort_values(by=['Asset']))

          date    Asset  Monthly Value  Indicator
0   2019-01-01  Asset A            200          0
3   2019-02-01  Asset A            400          0
6   2019-03-01  Asset A            400          0
9   2019-04-01  Asset A            300          0
12  2019-05-01  Asset A            200          1
1   2019-01-01  Asset B            800          0
4   2019-02-01  Asset B            300          0
7   2019-03-01  Asset B            400          1
10  2019-04-01  Asset B            600          0
13  2019-05-01  Asset B            100          0
2   2019-01-01  Asset C            400          0
5   2019-02-01  Asset C            600          0
8   2019-03-01  Asset C            900          0
11  2019-04-01  Asset C            400          1
14  2019-05-01  Asset C            200          0

इस लूप में कुछ गड़बड़ है

asset = df['Asset'].unique()
for asset in df['Asset']:
    print(asset)

एसेट ए, बी और सी के लिए वांछित आउटपुट इस तरह दिखना चाहिए।

          date    Asset  Monthly Value  Indicator
2   2019-01-01  Asset C            400          0
5   2019-02-01  Asset C            600          0
8   2019-03-01  Asset C            900          0
11  2019-04-01  Asset C            400          1
14  2019-05-01  Asset C            200          0
0
Starbucks 15 जिंदा 2020, 21:14

1 उत्तर

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

unique का उपयोग करने के बजाय आपको groupby का उपयोग करना चाहिए।

for _, v in df.groupby('Asset'):
    print(v, end='\n\n')

          date    Asset  Monthly Value  Indicator
0   2019-01-01  Asset A            200          0
3   2019-02-01  Asset A            400          0
6   2019-03-01  Asset A            400          0
9   2019-04-01  Asset A            300          0
12  2019-05-01  Asset A            200          1

          date    Asset  Monthly Value  Indicator
1   2019-01-01  Asset B            800          0
4   2019-02-01  Asset B            300          0
7   2019-03-01  Asset B            400          1
10  2019-04-01  Asset B            600          0
13  2019-05-01  Asset B            100          0

          date    Asset  Monthly Value  Indicator
2   2019-01-01  Asset C            400          0
5   2019-02-01  Asset C            600          0
8   2019-03-01  Asset C            900          0
11  2019-04-01  Asset C            400          1
14  2019-05-01  Asset C            200          0

यदि आप unique विधि का उपयोग करना चाहते हैं तो आप इसे इस प्रकार करेंगे

asset = df['Asset'].unique()
for a in asset:
    print(df[df.Asset == a], end='\n\n')
1
gold_cy 15 जिंदा 2020, 18:18