Where is the value when I do this in pandas Series

后端 未结 1 1285
再見小時候
再見小時候 2021-01-17 16:47

I have the following code.

s2 = pd.Series([100,\"PYTHON\",\"Soochow\",\"Qiwsir\"],
               index=[\"mark\",\"title\",\"university\",\"name\"])

s2.m         


        
相关标签:
1条回答
  • 2021-01-17 17:33

    You are confusing attributes with series indices.

    The syntax s2.xyz = 100 first looks for xyz in the series index and overwrites it if it exists.

    If it does not exist, it adds a new attribute to the series.

    How to add an attribute

    if 'price' not in s2:
        s2.price = 100
    

    You should not add attributes which conflict with indices; this is asking for trouble given the similar syntax permitted for access.

    How to add an element to series

    In order to add an element to the series with an index, use pd.Series.loc:

    s2.loc['price'] = 100
    

    How to tell the difference

    Run s2.__dict__. You will find:

    {'_data': SingleBlockManager
     Items: Index(['mark', 'title', 'university', 'name'], dtype='object')
     ObjectBlock: 4 dtype: object,
     '_index': Index(['mark', 'title', 'university', 'name'], dtype='object'),
     '_item_cache': {},
     '_name': None,
     '_subtyp': 'series',
     'is_copy': None,
     'price': '100'}
    

    It is clear that price has been added as an attribute, not as an index.

    0 讨论(0)
提交回复
热议问题