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

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

讀取CSV列,如果滿足要求,寫入單元格

讀取CSV列,如果滿足要求,寫入單元格

肥皂起泡泡 2023-09-05 17:19:21
我正在嘗試讀取 CSV 文件的第一列,看看它是否滿足要求。如果符合要求,我想把它寫到下面的一欄。正如您從我的代碼中看到的,我可以進行讀?。ūM管不確定是否是最好的方法),我只需要讓它寫入該行的第 3 列。示例:如果第一列中的任何行包含以 25 開頭的 4 位值,則在該行的第 3 列中輸入 Y。CSV 示例:number,na,prefix25,na,na,na1000,,,,,1254,,,,,251,,,,,2501,,,,,6548,,,,,1478,,,,,02,,,,,2550,,,,,2569,,,,,所需的 CSV 輸出:number,na,prefix25,na,na,na1000,,,,,1254,,,,,251,,,,,2501,,y,,,6548,,,,,1478,,,,,02,,,,,2550,,y,,,2569,,y,,,到目前為止的代碼:def micro():    #Prefix 25    with open(dbPath) as f:        reader = csv.reader(f, delimiter="\t")        for i in reader:            if len(i[0]) == 4:                curStore = i[0].startswith("25")                if curStore is True:                    #Prints found numbers what are 4 digits and start with 25                    print(i[0])預(yù)先感謝您的任何幫助
查看完整描述

4 回答

?
holdtom

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

pandas是為此任務(wù)而設(shè)計的。


import pandas as pd


df = pd.read_csv(<path_to_file>)

df['prefix25'] = df['number'].apply(lambda x: 'y' if str(x).startswith('25') else None)

df.to_csv(<path_and_file_name>)


查看完整回答
反對 回復(fù) 2023-09-05
?
慕碼人2483693

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

pandas這是使用的解決方案map。方法比用于操作map更有效,而可以用于數(shù)據(jù)幀applyapply

import pandas as pd


#reading the csv as a dataframe??

df = pd.read_csv('test.csv', delimiter=',')


#applying a lambda function using map

df['prefix25'] = df['number'].map(lambda x: 'y' if (str(x).startswith('25') and len(str(x))==4)? else '')


#replacing `NaN` with '' to match your requirements?

df.fillna('',inplace=True)?


#matching the columns as pandas automatically renames same columns?

df.columns = ['number','na','prefix25','na','na','na']


#saving the output csv

df.to_csv('output.csv',index=False)?

輸出:


number,na,prefix25,na,na,na

1000,,,,,

1254,,,,,

251,,,,,

2501,,y,,,

6548,,,,,

1478,,,,,

2,,,,,

2550,,y,,,

2569,,y,,,?


查看完整回答
反對 回復(fù) 2023-09-05
?
慕村9548890

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

嘗試執(zhí)行以下易于理解的步驟:


import pandas as pd

df = pd.read_csv('sofile.csv',',')

numlist = df.number.astype(str)

outlist = ['y' if (len(x)==4 and x.startswith('25')) else ''

            for x in numlist ]

df.prefix25 = outlist

print(df)

輸出:


   number  na prefix25  na.1  na.2  na.3

0    1000 nan            nan   nan   nan

1    1254 nan            nan   nan   nan

2     251 nan            nan   nan   nan

3    2501 nan        y   nan   nan   nan

4    6548 nan            nan   nan   nan

5    1478 nan            nan   nan   nan

6       2 nan            nan   nan   nan

7    2550 nan        y   nan   nan   nan

8    2569 nan        y   nan   nan   nan

可以使用函數(shù)保存回 csv df.to_csv('newfile.csv')。


查看完整回答
反對 回復(fù) 2023-09-05
?
鳳凰求蠱

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

這是使用temp文件的一種方法


import csv

import os


def micro():

    #Prefix 25

    with open(dbPath) as f, open("temp_file", "w") as temp_outfile:  #Please provide full path to temp file

        reader = csv.reader(f, delimiter="\t")

        writer = csv.writer(temp_outfile, delimiter="\t")

        for i in reader:

            if len(i[0]) == 4 and i[0].startswith("25"):

                i[2] = "Y"

            writer.writerow(i)

            

            #Replace Old File with TempFile

            os.rename("temp_file", dbPath)


查看完整回答
反對 回復(fù) 2023-09-05
  • 4 回答
  • 0 關(guān)注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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