如何使用基于使用python的空单元格的Excel的字典创建摘要? (与python vlookup)

时间:2017-07-06 17:45:41

标签: python excel dictionary

我有一个Excel电子表格。在A列中我有一个ID,B列我有描述。

相同的ID和相同的文本重复x次,但该ID的最后一行没有说明。然后ID发生变化。

以下是该文件的屏幕截图:

excel file

我想用Python向下阅读。当找到新ID时,将其附加到带有描述的字典中,然后转到下一个ID及其描述。

就像vlookup公式,但是使用Python。

3 个答案:

答案 0 :(得分:0)

您可以使用read_excel将数据加载到pandas数据框中,然后在说明列上使用fillnamethod='ffill',然后保存表格。一个三线,基本上。

答案 1 :(得分:0)

我认为这是你想要实现的目标:

import csv
datafile = open('asdf.csv', 'r')
datareader = csv.reader(datafile,delimiter=',')
data = []
for row in datareader:
    data.append(row)    

output = []
ids = []
for d in data:
    if d[0] not in ids:
        ids.append(d[0])
        output.append(d)

print(output)

由此:

你明白了:

[['\xef\xbb\xbf1', 'ab'], ['1', 'b'], ['2', 'ab'], ['3', 'z'], ['33', 'ab']]

答案 2 :(得分:0)

如果您喜欢使用pandas

,可以尝试此操作

如果您不知道如何使用pd读取excel文件,请使用pandas.read_excel

import pandas as pd
# header = None in case you don't have any header rows in your excel
# names are the columns names
df = pd.read_excel(file_dir,sheetName,header=None,names=['A','B','C']) 

对于这种情况我使用了这个数据集:

     A      B      C
0  ID1  Desc1  stuff
1  ID1  Desc1  stuff
2  ID1  Desc1  stuff
3  ID1    NaN    NaN    # NaN are empty cells ( missing values )
4  ID2  Desc2  stuff
5  ID2  Desc2  stuff
6  ID2    NaN    NaN

因此,一旦拥有了数据框,您创建自己的所有内容所需的只有pandas.drop_duplicateszip内置函数:

df.drop_duplicates(['A'],keep='first',inplace=True)
d = {k:v for k,v in zip(df['A'],df['B'])}

会给你d

{'ID1': 'Desc1', 'ID2': 'Desc2'}

希望这很有用。