Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pandas confused
#1
I use pandas occasionally to read excel files.
I found out that I can also use it to calculate subtotals
using group(...). Works fine. Except when i print the result
of the subtotal after grouping, it displays 0,1... on top,
are these indexes? Example sites don't seem comment on that,
so I must be missing something. What ?
thx,
Paul
import pandas as panda

Q = [['AF-10', 744.42],
['AF-10', 1243.68],
['AF-20', 90.0],
['BA-40', -1425.0],
['BA-40', 1425.0],
['BA-40', 1425.0],
['BA-40', 1425.0],
['BA-50', 150.0],
['BO-30', 16514.61],
['BR-10', 528.35]]  # etc....
Qdf = panda.DataFrame(Q)
print(Qdf.groupby([0]).sum())
Output:
1 0 AF-10 1988.10 AF-20 90.00 BA-40 2850.00 BA-50 150.00 BO-30 16514.61 BR-10 528.35
It is more important to do the right thing, than to do the thing right.(P.Drucker)
Better is the enemy of good. (Montesquieu) = French version for 'kiss'.
Reply
#2
(Sep-18-2021, 07:26 AM)DPaul Wrote: Except when i print the result
of the subtotal after grouping, it displays 0,1... on top,
are these indexes?
No only 1 are index use df.columns to see,have to reset the index.
>>> df = Qdf.groupby([0]).sum()
>>> df
              1
0              
AF-10   1988.10
AF-20     90.00
BA-40   2850.00
BA-50    150.00
BO-30  16514.61
BR-10    528.35
>>> df.columns
Int64Index([1], dtype='int64')
>>> 
>>> df = df.reset_index()
>>> df.columns
Int64Index([0, 1], dtype='int64')
>>> df
       0         1
0  AF-10   1988.10
1  AF-20     90.00
2  BA-40   2850.00
3  BA-50    150.00
4  BO-30  16514.61
5  BR-10    528.35

>>> df[0]
0    AF-10
1    AF-20
2    BA-40
3    BA-50
4    BO-30
5    BR-10
Name: 0, dtype: object
Reply
#3
Thanks for your speedy answer. Leaves me speechless.
I wonder if somebody thought of the KISS rule,
when he/she implemented this Smile
Paul
It is more important to do the right thing, than to do the thing right.(P.Drucker)
Better is the enemy of good. (Montesquieu) = French version for 'kiss'.
Reply
#4
This also seems to do the trick:

Qlst = Qdf.values.tolist()
print(Qlst)

Paul
It is more important to do the right thing, than to do the thing right.(P.Drucker)
Better is the enemy of good. (Montesquieu) = French version for 'kiss'.
Reply
#5
Yes if the goal to take data out Pandas to a list then it will work,as column index don't get used.
If take that list back into DataFrame then it will automatically give column index.
>>> data = Qdf.values.tolist()
>>> data
[['AF-10', 744.42],
 ['AF-10', 1243.68],
 ['AF-20', 90.0],
 ['BA-40', -1425.0],
 ['BA-40', 1425.0],
 ['BA-40', 1425.0],
 ['BA-40', 1425.0],
 ['BA-50', 150.0],
 ['BO-30', 16514.61],
 ['BR-10', 528.35]]
>>> type(data) # A normal Python list
<class 'list'>
>>> 
>>> import pandas as pd
>>> 
>>> df = panda.DataFrame(data)
>>> df
       0         1
0  AF-10    744.42
1  AF-10   1243.68
2  AF-20     90.00
3  BA-40  -1425.00
4  BA-40   1425.00
5  BA-40   1425.00
6  BA-40   1425.00
7  BA-50    150.00
8  BO-30  16514.61
9  BR-10    528.35
>>> df = df.rename(columns={0: 'Name', 1: 'Cost'})
>>> df
    Name      Cost
0  AF-10    744.42
1  AF-10   1243.68
2  AF-20     90.00
3  BA-40  -1425.00
4  BA-40   1425.00
5  BA-40   1425.00
6  BA-40   1425.00
7  BA-50    150.00
8  BO-30  16514.61
9  BR-10    528.35
>>> type(df) # A DataFrame
<class 'pandas.core.frame.DataFrame'>
Reply
#6
They could have made the default column names A, B, C like spreadsheets do, but once you get past 26 columns it works better to use numbers, IMHO.
Reply
#7
Thing is, in this case I do not care about the headers,
but i want the row labels.
".reset_index" and "for column in df..." give me what i want.
Thanks for all the help.
Paul
It is more important to do the right thing, than to do the thing right.(P.Drucker)
Better is the enemy of good. (Montesquieu) = French version for 'kiss'.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  String int confused janeik 7 1,016 Aug-02-2023, 01:26 AM
Last Post: deanhystad
  I am confused with the key and value thing james1019 3 912 Feb-22-2023, 10:43 PM
Last Post: deanhystad
  is and '==' i'm confused hshivaraj 6 2,625 Sep-15-2021, 09:45 AM
Last Post: snippsat
  Confused with 'flags' tester_V 10 4,785 Apr-12-2021, 03:03 AM
Last Post: tester_V
  Simple Tic Tac Toe but I'm confused Izith 1 2,152 Sep-26-2020, 04:42 PM
Last Post: Larz60+
  I am really confused with this error. Runar 3 2,926 Sep-14-2020, 09:27 AM
Last Post: buran
  Confused on how to go about writing this or doing this... pythonforumuser 3 2,421 Feb-10-2020, 09:15 AM
Last Post: snippsat
  Dazed and confused... RodNintendeaux 10 7,388 May-28-2017, 01:32 PM
Last Post: sparkz_alot

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020