数据帧添加头使所有值都变为NaN

2024-06-24 12:27:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手。 我用几下鼠标导入了excel文件。然后选择1点击并尝试放置分层列标题,但它会将所有值生成为NaN。然后,如果我将输入从excel数据更改为Numpy数组,它就可以正常工作。我不确定我哪里出错了

下面是代码

fn= r'C:\Users\Yun\NN_FX\Bbg_Today_Data.xlsx'
a=df_dict['Output'].iloc[:,[0,1,2,3]]
a.head(15)

Output

arrays = [["KRW","KRW", "MYR","MYR"],["Date", "Price","Date", "Price"]]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples)
bb=pd.DataFrame(a,columns=arrays)
bb.head(15)

enter image description here

但如果我尝试使用Numpy数组。它很好用

arrays = [["KRW","KRW", "MYR","MYR"],["Date", "Price","Date", "Price"]]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples)
aa=np.random.randn(15, 4)
bb=pd.DataFrame(aa,columns=arrays)
bb.head(15)

enter image description here

有人能告诉我出了什么问题吗


Tags: numpyoutputdate数组zipexcelpricehead
1条回答
网友
1楼 · 发布于 2024-06-24 12:27:37

通过columns属性设置列标签就足够了

import pandas as pd

fn = r'c:\test\Bbg_Today_Data.xlsx'
df_dict = pd.read_excel(fn, sheet_name=None)
a = df_dict['Output'].iloc[:, [0, 1, 2, 3]]
a.columns = [["KRW", "KRW", "MYR", "MYR"], ["Date", "Price", "Date", "Price"]]
print(a.head(15))

输出:

                    KRW                               MYR           
                   Date        Price                 Date      Price
0   Updated at 09:13:39          NaN  Updated at 09:13:39        NaN
1              KRW=KFTC          NaN                 MYR=        NaN
2             Timestamp  Trade Close            Timestamp  Bid Close
3   2021-08-20 00:00:00       1179.6  2021-08-20 00:00:00      4.236
4   2021-08-19 00:00:00       1176.2  2021-08-19 00:00:00      4.237
5   2021-08-18 00:00:00         1168  2021-08-18 00:00:00      4.236
...

相关问题 更多 >