第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

讀取兩行CSV Python之間的列值

讀取兩行CSV Python之間的列值

森林海 2022-05-24 09:22:22
我有一個 CSV,格式為:Name1,Value1,Value2,Value3Name2,Value40,Value50,Value60Name3,Value5,Value10,Value15每個“名稱”沒有固定數(shù)量的“值”。名稱沒有模式。我想將每個名稱的值讀入一個字典,例如:Name1 : [Value1,Value2,Value3]Name2 : [Value40,Value50,Value60] etc.我目前的代碼是這樣的:CSVFile = open("GroupsCSV.csv")Reader = csv.reader(CSVFile)for row in Reader:    if row[0] and row[2]:        objlist = []        objlist.append(row[2])        for row in Reader:            if not row[0] and row[2]:                objlist.append(row[2])            else:                break        print(objlist)這事半功倍。它會做 Name1,Name3,Name5,Name7 等。我似乎找不到阻止它的方法skipping。寧愿在不使用 Lambda 之類的東西的情況下執(zhí)行此操作(因為它還不是我完全理解的東西?。>庉嫞菏纠?csv 的圖像(真實數(shù)據(jù)有另一個不必要的列,因此代碼中的“行 [2]”。:
查看完整描述

2 回答

?
富國滬深

TA貢獻1790條經(jīng)驗 獲得超9個贊

嘗試pandas:


import pandas as pd


df = pd.read_csv('your_file.csv', header=None)


(df.ffill()                # fill the blank with the previous Name

  .groupby([0])[1]         # collect those with same name

  .apply(list)             # put those in a list

  .to_dict()               # make a dictionary

)

輸出:


{'Name1': ['Value1', 'Value2', 'Value3'],

 'Name2': ['Value40', 'Value50', 'Value60'],

 'Name3': ['Value5', 'Value10', 'Value15']}

更新:純 python(3) 解決方案:


with open('your_file.csv') as f:

    lines = f.readlines()


d = {}

for line in lines:

    row = line.split(',')

    if row[0] != '': 

        key = row[0]

        d[key] = []


    d[key].append(row[1])


d


查看完整回答
反對 回復(fù) 2022-05-24
?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

我認為您面臨的問題是由于您的嵌套循環(huán)。兩個循環(huán)都指向同一個迭代器。您將在找到 Name1 后開始第二個循環(huán),并在找到 Name2 時將其中斷。到外部循環(huán)在中斷后繼續(xù)時,您已經(jīng)跳過了 Name2。


您可以在同一個循環(huán)中同時擁有這兩個條件:


# with open("GroupsCSV.csv") as csv_file:

#     reader = csv.reader(csv_file)

reader = [[1,2,3],[None,5,6]] # Mocking the csv input

objlist = []

for row in reader:

    if row[0] and row[2]:

        objlist.clear()

        objlist.append(row[2])


    elif not row[0] and row[2]:

        objlist.append(row[2])

    print(objlist)

編輯:我更新了代碼以提供可測試的輸出。打印輸出如下所示:


[3]

[3, 6]


查看完整回答
反對 回復(fù) 2022-05-24
  • 2 回答
  • 0 關(guān)注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號