首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在两个列表列表比较值后选择特定行

如何在两个列表列表比较值后选择特定行
EN

Stack Overflow用户
提问于 2017-01-25 18:00:38
回答 1查看 160关注 0票数 0

不确定我的头衔是否清晰。这是我想要做的。一方面,我有一个4行的csv文件:

代码语言:javascript
复制
01/01/2017,value,value,value
02/01/2017,value,value,value
03/01/2017,value,value,value
04/01/2017,value,value,value

另一方面,我有一个只有2行的Google电子表格:

代码语言:javascript
复制
01/01/2017,value,value,value
02/01/2017,value,value,value

我想用与csv文件相比缺少的两行来更新google电子表格:以03/01/201704/01/2017开头的行

我有以下代码:

代码语言:javascript
复制
def add_todo():
    csvselection = []
    with open('data.csv', 'rb') as f:
        reader = csv.reader(f)
        for row in reader:
                csvselection.append(row)
    credentials = get_credentials()
    http = credentials.authorize(httplib2.Http())
    discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?'
                    'version=v4')
    service = discovery.build('sheets', 'v4', http=http,
                              discoveryServiceUrl=discoveryUrl)

    spreadsheetId = 'XXXXIDXXXX'
    rangeName = 'Class Data!A2:E'
    result = service.spreadsheets().values().get(
        spreadsheetId=spreadsheetId, range=rangeName).execute()
    gsselection = result.get('values', [])

csvselection是一个列表列表(?)来自csv文件和gsselection的列表(?)从电子表格中。

我真的不知道什么是最有效的解决方案来比较我的两个列表,并只选择我想要传递到我的Google工作表中的缺少的行。

我想使用这样的东西:

代码语言:javascript
复制
for row in gsselection:
    if row in csvselection:
        print(row)

如果我是正确的,这应该返回我不想在我的电子表格中复制的行,所以我需要排除它们。然而,这部分代码不起作用,我只需要比较列表列表的前几个元素。我想了想:

代码语言:javascript
复制
for row[n][0] in gsselection:
    if row[n][0] in csvselection:
        print(row)

但是我现在也不知道该如何正确地编写这个操作。

为了便于说明和回答,下面是我用来将我想要的数据传递到google工作表中的代码的一部分:

代码语言:javascript
复制
values = {'values': test}
result = service.spreadsheets().values().append(
    spreadsheetId=spreadsheetId, range='A:C',
    valueInputOption='RAW',
    body=values).execute()

有什么想法吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-25 18:15:12

试着像这样对待熊猫:

代码语言:javascript
复制
import pandas as pd

df = pd.read_csv('csvfile', header=None)
df2 = pd.read_excel('googlesheet', header=None)
df3 = pd.concat([df,df2]).drop_duplicates([0])
df3.to_excel('final_file')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41848528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档