当前位置: 动力学知识库 > 问答 > 编程问答 >

python - 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()

网友答案:

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
分享给朋友:
您可能感兴趣的文章:
随机阅读: