用xlrd读取excel并存储数据

2024-09-28 21:57:34 发布

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

我在excel表格中有这些数据

FT_NAME     FC_NAME C_NAME
FT_NAME1    FC1     C1
FT_NAME2    FC21    C21
            FC22    C22
FT_NAME3    FC31    C31
            FC32    C32
FT_NAME4    FC4     C4

列名的位置

FT_NAME,FC_NAME,C_NAME

我想将这些值存储在一个数据结构中以备将来使用,目前我正试图将它们存储在一个列表列表中,但以下代码无法实现

^{pr2}$

我期望输出为

ft=[FT_NAME1,FT_NAME2,FT_NAME3,FT_NAME4]
fc=[FC1, [FC21,FC22],[FC31,FC32],FC4]
oc=[C1,[C21,C22],[C31,C32],C4]

有谁能帮我找到更好的Python疗法吗?在


Tags: namefcftc1name1name2name3fc1
1条回答
网友
1楼 · 发布于 2024-09-28 21:57:34

您可以使用pandas。它将数据读入一个数据帧,这实际上是一个大字典。在

import pandas as pd

data =pd.read_excel('file.xlsx', 'Sheet1')
data = data.fillna(method='pad')

print(data)

输出如下:

^{pr2}$

要获取子列表结构,请尝试使用以下函数:

def group(data):
    output = []
    names = list(set(data['FT_NAME'].values))
    names.sort()
    output.append(names)
    headernames = list(data.columns)
    headernames.pop(0)

    for ci in list(headernames):
        column_group = []
        column_data = data[ci].values
        for name in names:
            column_group.append(list(column_data[data['FT_NAME'].values == name]))
        output.append(column_group)

    return output

如果你这样称呼它:

ft, fc, oc = group(data)
print(ft)
print(fc)
print(oc)

您将得到以下输出:

['FT_NAME1', 'FT_NAME2', 'FT_NAME3', 'FT_NAME4']
[['FC1'], ['FC21', 'FC22'], ['FC31', 'FC32'], ['FC4']]
[['C1'], ['C21', 'C22'], ['C31', 'C32'], ['C4']]

这是你想要的,除了一个元素现在也在一个列表中。在

这不是最干净的方法,但它能完成任务。在

希望有帮助。在

相关问题 更多 >