user3276150
user3276150

Reputation: 3

pandas concat is not possible got error why

I like to add a total row on the top of my pivot, but when I trie to concat I got an error.

>>> table
          Weight                        
Vcountry       1   2   3   4   5   6   7
V20001                                  
1             86 NaN NaN NaN NaN NaN  92
2             41 NaN  71  40  50  51  49
3            NaN  61  60  61  60  25  62
4             51 NaN NaN NaN NaN NaN NaN
5             26  26  20  41  25  23 NaN

[5 rows x 7 columns]

Thats the pivot Table

>>> totals_frame
Vcountry      1   2    3    4    5   6    7
totalCount  204  87  151  142  135  99  203

The total of it I like to join

[1 rows x 7 columns]
>>> pc = [totals_frame, table]
>>> concat(pc)

Here the output:

reindex_items
    copy_if_needed=True)
  File "C:\Python27\lib\site-packages\pandas\core\index.py", line 2887, in reindex
    target = MultiIndex.from_tuples(target)
  File "C:\Python27\lib\site-packages\pandas\core\index.py", line 2486, in from_tuples
    arrays = list(lib.tuples_to_object_array(tuples).T)
  File "inference.pyx", line 915, in pandas.lib.tuples_to_object_array (pandas\lib.c:43656)
TypeError: object of type 'long' has no len()

Upvotes: 0

Views: 984

Answers (1)

LondonRob
LondonRob

Reputation: 78753

Here's a possible way: instead of using pd.concat use pd.DataFrame.append. There's a bit of fiddling around with the index to do, but it's still quite neat I think:

# Just setting up the dataframe:
df = pd.DataFrame({'country':['A','A','A','B','B','B'],
                   'weight':[1,2,3,1,2,3],
                   'value':[10,20,30,15,25,35]})
df = df.set_index(['country','weight']).unstack('weight')

# A bit of messing about to get the index right:
index = df.index.values.tolist()
index.append('Totals')

# Here's where the magic happens:
df = df.append(df.sum(), ignore_index=True)
df.index = index

which gives:

        value        
weight      1   2   3
A          10  20  30
B          15  25  35
Totals     25  45  65

Upvotes: 1

Related Questions