我想从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个列表有效。然后我尝试将每个列表的行附加在一起,但没有成功。有没有一种简单的方法可以做到这一点?
答案 0 :(得分:2)
使用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)))
答案 1 :(得分:1)
您应该使用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()