python - Pandas DataFrame 添加标头使所有值变为 NaN
问题描述
我是 Python 新手。我通过几次点击导入了 excel 文件。然后选择 1 次点击并尝试放置 Hierarchical 列标题,但它会将所有值生成为 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)
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)
但是如果我尝试使用 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)
有人可以告诉我出了什么问题吗?
解决方案
通过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
...
推荐阅读
- html - 一致的社交媒体按钮
- python - 使用 cx_oracle 在 python 中读取 Clob - 不工作
- postgresql - 无法使用 PostgreSql 在代码优先方法中自动创建用户定义的表
- r - 根据列的名称和另一个列值将 NA 分配给列
- oracle - Oracle Forms 自动在下一行添加员工
- javascript - 如何使用moment js计算人的年龄?
- c# - 如何仅在单击按钮时验证单元格?
- java - JPA EntityManager 无法在 PostInsertEventListener 中刷新
- node.js - 更新大哈希值时 Sequelize Update 中的错误
- android - 忽略无线电应用的电池优化