【问题标题】:add row to dataframe pandas向数据框熊猫添加行
【发布时间】:2020-12-29 10:34:33
【问题描述】:

我想在顶部添加一个中间行。基于此stack answer,我执行以下操作:

pd.concat([df.median(),df],axis=0, ignore_index=True)

DF 形状: 50000 x 226
预期形状: 50001 x 226
修改后 DF 形状: @987654326 @???

我做错了什么?我无法理解发生了什么?

【问题讨论】:

标签: python-3.x pandas dataframe


【解决方案1】:

也许你想要的是这样的:

dfn = pd.concat([df.median().to_frame().T, df], ignore_index=True)

创建一些示例数据:

df = pd.DataFrame(np.arange(20).reshape(4,5), columns= list('ABCDE'))
dfn = pd.concat([df.median().to_frame().T, df])

df
    A   B   C   D   E
0   0   1   2   3   4
1   5   6   7   8   9
2   10  11  12  13  14
3   15  16  17  18  19


df.median().to_frame().T
     A    B    C     D     E
0  7.5  8.5  9.5  10.5  11.5


dfn
      A     B     C     D     E
0   7.5   8.5   9.5  10.5  11.5
0   0.0   1.0   2.0   3.0   4.0
1   5.0   6.0   7.0   8.0   9.0
2  10.0  11.0  12.0  13.0  14.0
3  15.0  16.0  17.0  18.0  19.0

df.median() 是一个Series,行索引为A, B, C, D, E,所以当你将df.median()df 连接时,结果是:

pd.concat([df.median(),df], axis=0)

      0     A     B     C     D     E
A   7.5   NaN   NaN   NaN   NaN   NaN
B   8.5   NaN   NaN   NaN   NaN   NaN
C   9.5   NaN   NaN   NaN   NaN   NaN
D  10.5   NaN   NaN   NaN   NaN   NaN
E  11.5   NaN   NaN   NaN   NaN   NaN
0   NaN   0.0   1.0   2.0   3.0   4.0
1   NaN   5.0   6.0   7.0   8.0   9.0
2   NaN  10.0  11.0  12.0  13.0  14.0
3   NaN  15.0  16.0  17.0  18.0  19.0

【讨论】:

  • 谢谢 :) 我试过pd.DataFrame(df.median()),但效果不佳。我猜是因为缺少转置!
【解决方案2】:
pd.concat([df.median(),df],axis=0, ignore_index=True)

此代码为您创建了一行,但那不是 DataFrame 它是一个系列。所以你想将系列转换为 DataFrame 所以你可以使用

.to_frame().T

你的代码然后你的代码变成

pd.concat([df.median().to_frame().T,df],axis=0, ignore_index=True)

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 2014-08-29
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多