【问题标题】:Convert excel table to key list将excel表转换为键列表
【发布时间】:2018-03-27 08:15:30
【问题描述】:

我想从 Excel 文件为大型 hdf 文件创建密钥列表:

表:

我希望密钥列表如下所示:

/blue/a/a1
/blue/a/a2
/blue/b/b1
...

到目前为止我的代码是:

import pandas as pd
import numpy as np

df = pd.read_excel('file.xlsx', usecols = ['A', 'B', 'C'])
print(df)


list1, list2, list3 = df['A'].tolist(), df['B'].tolist(), df['C'].tolist()
print(list1,list2,list3)

for i in list1:
    list1[i].append(list2[i]).append(list3[i])


print(list1)

转换为 3 个列表有效。然后我尝试将每个列表的行附加在一起,但没有成功。有没有简单的方法来做到这一点?

【问题讨论】:

    标签: python excel python-3.x pandas


    【解决方案1】:

    使用zip 方法,然后使用string.join 获得所需的输出

    例如:

    res = []
    list1, list2, list3 = df['A'].tolist(), df['B'].tolist(), df['C'].tolist()
    for i in zip(list1, list2, list3 ):
        val = map(str, i)
        res.append("/{0}".format("/".join(val)))
    

    【讨论】:

    • 感谢您的回答!不幸的是,我遇到了一个错误。类型错误:序列项 2:预期的 str 实例,找到浮点数。表有几个NaN,会不会导致报错?
    • 您的代码适用于我提供的表格。不幸的是,它与我正在使用的桌子无关,我不知道为什么。这些行看起来像这样:blue;AGHZTG;M227
    • 如何将元素转换为str。 val = map(str, i) res.append("/{0}".format("/".join(val)))
    【解决方案2】:

    您应该使用apply函数根据需要创建一个新列,然后将其转换为列表

    import pandas as pd
    import numpy as np
    
    df = pd.read_excel('file.xlsx', usecols = ['A', 'B', 'C'])
    print(df)
    x=df[['A','B','C']].apply(lambda row: '/'+row['A']+'/'+row['B']+'/'+row['C'],axis=1)
    x.tolist()
    

    更新更短的代码:

    x=df[['A','B','C']].apply(lambda row: '/'+'/'.join(row),axis=1)
    x.tolist()
    

    【讨论】:

    • 感谢您的回答。这看起来像一个优雅的解决方案,不幸的是我得到一个 KeyError('A','B','C')
    • 您可能需要将轴更改为 1
    • 仍然出现同样的错误
    猜你喜欢
    • 2018-05-26
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    相关资源
    最近更新 更多