我有一个Excel电子表格。在A列中我有一个ID,B列我有描述。
相同的ID和相同的文本重复x
次,但该ID的最后一行没有说明。然后ID发生变化。
以下是该文件的屏幕截图:
我想用Python向下阅读。当找到新ID时,将其附加到带有描述的字典中,然后转到下一个ID及其描述。
就像vlookup
公式,但是使用Python。
答案 0 :(得分:0)
您可以使用read_excel
将数据加载到pandas数据框中,然后在说明列上使用fillna
和method='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_duplicates和zip内置函数:
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'}
希望这很有用。