如何替换excel数据列表的部分,python

时间:2018-03-13 23:51:05

标签: python

如果我有list = ['a','b','c']

并且excel文件看起来像

hasXpath()

如何制作一个用“1”替换“a”的新列表,用“2”替换“b”等。

要清楚,我想创建一个新列表,其中列出了List2 = [“1”,“2”,“3”],但是使用了excel表。

基本上我的问题是,如何从excel表格中替换列表旁边的单元格内容?

请注意我的excel表比这个更大,名称更复杂。另外,到目前为止,我已将excel文件保存为pandas数据帧。

感谢。

2 个答案:

答案 0 :(得分:0)

因为您已经使用过pandas,所以您只需将excel数据与列表简单连接即可。

或者您可以创建一个dict来存储键/值对,然后循环列表以获取该词典中的值。

代码如下所示:假设所有密钥都可以在Excel中找到,您可能需要添加一些实际使用的验证):

#uses one dict store index
test = ['a' ,'b', 'c']
excel = [['a', 1], ['b', 2], ['c', 3]]
G_indexes = {}
def buildIndexes(data):
    G_indexes[data[0]] = data[1]
    return data

list(map(buildIndexes, excel))
print('normal',list(map(lambda item: G_indexes[item], test)))

#use pandas join
import pandas as pd
df_excel = pd.DataFrame({'key': ['a', 'b', 'c', 'd', 'e'],
                        'value': [1, 2, 3, 4, 5]})
your_list = ['a', 'b', 'c']
df_yours = pd.DataFrame({'key': your_list})

df_result = df_yours.join(df_excel.set_index('key'), on='key')
print('pandas',list(df_result['value']))

输出:

normal [1, 2, 3]
pandas [1, 2, 3]
[Finished in 1.04s]

答案 1 :(得分:0)

如果您的列表只包含字符串,则可以遍历每个元素并替换条目。 读取excel文件的最简单方法是使用pandas:

import pandas as pd

df = pd.read_excel('filename')  # user read_csv if your file is .csv
df.set_index('Column 1')
new_list = [df[i] for i in old_list]  # old_list = ['a', 'b', 'c']

如果你已经安装了pandas并且第1列的条目是唯一的并且我没有错过内联循环,这应该可以工作。其他明智的使用更基本的语法:

new_list = []
for i in old_list:
    new_list.append(df[i])