在python中应用的concat结果

e5nszbig  于 2023-01-11  发布在  Python
关注(0)|答案(1)|浏览(143)

我正在尝试在 Dataframe 的一列上应用一个函数。在得到多个结果作为 Dataframe 之后,我想把它们都串接在一个 Dataframe 中。
为什么第一种选择行得通而第二种不行?

import numpy as np
import pandas as pd

def testdf(n):
    test = pd.DataFrame(np.random.randint(0,n*100,size=(n*3, 3)), columns=list('ABC'))
    test['index'] = n
    return test

test = pd.DataFrame({'id': [1,2,3,4]})

testapply = test['id'].apply(func = testdf)
#option 1
pd.concat([testapply[0],testapply[1],testapply[2],testapply[3]])

#option2
pd.concat([testapply])
baubqpgj

baubqpgj1#

pd.concat需要一个序列的panda对象s,但是您的#2case/选项传递了一个包含多个 Dataframe 的单个pd.Series对象的序列,因此它不会进行连接-您只是按原样获得该序列。
要修复第二种方法,请使用解包:

print(pd.concat([*testapply]))
A    B    C  index
0    91   15   91      1
1    93   85   91      1
2    26   87   74      1
0   195  103  134      2
1    14   26  159      2
2    96  143    9      2
3    18  153   35      2
4   148  146  130      2
5    99  149  103      2
0   276  150  115      3
1   232  126   91      3
2    37  242  234      3
3   144   73   81      3
4    96  153  145      3
5   144   94  207      3
6   104  197   49      3
7     0   93  179      3
8    16   29   27      3
0   390   74  379      4
1    78   37  148      4
2   350  381  260      4
3   279  112  260      4
4   115  387  173      4
5    70  213  378      4
6    43   37  149      4
7   240  399  117      4
8   123    0   47      4
9   255  172    1      4
10  311  329    9      4
11  346  234  374      4

相关问题