pandas的series对象


import numpy as np
import pandas as pd
val=[18.15, 18.16, 17.89, 17.7, 636304.19, -0.58,  -3.14, 18.452, 18.223, 17.899, 636911.59 ,626663.57, 550736.96]
ind=['开盘价','最高价','收盘价','最低价','成交量','价格变动','涨跌幅','5日均价','10日均价','20日均价','5日均量','10日均量','20日均量']
s=pd.Series(data=val,index=ind)
print('输出均价均量:')
day5=pd.DataFrame(data=s[[7,10]].values,index=None,columns=s[[7,10]].index)
print(day5)

以上部分的输出有问题

 ValueError                                Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_203228\3916060400.py in 
      5 s=pd.Series(data=val,index=ind)
      6 print('输出均价均量:')
----> 7 day5=pd.DataFrame(data=s[[7,10]].values,index=None,columns=s[[7,10]].index)
      8 print(day5)

D:\Anoconda3\lib\site-packages\pandas\core\frame.py in __init__(self, data, index, columns, dtype, copy)
    692                 )
    693             else:
--> 694                 mgr = ndarray_to_mgr(
    695                     data,
    696                     index,

D:\Anoconda3\lib\site-packages\pandas\core\internals\construction.py in ndarray_to_mgr(values, index, columns, dtype, copy, typ)
    349     )
    350 
--> 351     _check_values_indices_shape_match(values, index, columns)
    352 
    353     if typ == "array":

D:\Anoconda3\lib\site-packages\pandas\core\internals\construction.py in _check_values_indices_shape_match(values, index, columns)
    420         passed = values.shape
    421         implied = (len(index), len(columns))
--> 422         raise ValueError(f"Shape of passed values is {passed}, indices imply {implied}")
    423 
    424 

ValueError: Shape of passed values is (2, 1), indices imply (2, 2)

想知道如何能有如下输出

输出均价均量:
5日均价 5日均量
18.452 636911.59

有用请采纳

import numpy as np
import pandas as pd

val = [18.15, 18.16, 17.89, 17.7, 636304.19, -0.58, -3.14, 18.452, 18.223, 17.899, 636911.59, 626663.57, 550736.96]
ind = ['开盘价', '最高价', '收盘价', '最低价', '成交量', '价格变动', '涨跌幅', '5日均价', '10日均价', '20日均价',
       '5日均量', '10日均量', '20日均量']
s = pd.Series(data=val, index=ind)
print('输出均价均量:')
day5 = pd.DataFrame(s)
print(day5.T[['5日均价','5日均量']])

该回答引用GPTᴼᴾᴱᴺᴬᴵ
您可以使用以下代码来得到您想要的输出:

day5 = s[['5日均价', '5日均量']].to_frame().T
print(day5)


输出结果:

         5日均价       5日均量
0       18.452  636911.59


使用 s[['5日均价', '5日均量']] 可以从 s 中选取包含均价和均量的子序列,.to_frame().T 会将其转换为一个行向量的 DataFrame,并将列名作为列索引。