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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何通過從內(nèi)容相似的多個(gè) .csv 文件導(dǎo)入數(shù)據(jù)來創(chuàng)建數(shù)據(jù)框?

如何通過從內(nèi)容相似的多個(gè) .csv 文件導(dǎo)入數(shù)據(jù)來創(chuàng)建數(shù)據(jù)框?

函數(shù)式編程 2023-04-18 10:51:41
幾個(gè)小時(shí)以來,我一直在為這個(gè)問題而苦苦掙扎,但我似乎無法弄清楚。如果有任何幫助,我將不勝感激。背景我正在嘗試通過 python 為我在學(xué)校的研究實(shí)驗(yàn)室自動(dòng)化數(shù)據(jù)操作。從實(shí)驗(yàn)中,.csv將生成一個(gè)包含 41 行數(shù)據(jù)(不包括標(biāo)題)的文件,如下所示。有時(shí),同一實(shí)驗(yàn)的多次運(yùn)行會(huì)產(chǎn)生.csv具有相同標(biāo)頭的文件,需要對(duì)它們?nèi)∑骄狄源_保準(zhǔn)確性。類似這樣的行數(shù)和標(biāo)題數(shù)相同的東西:到目前為止,我能夠過濾基本名稱以僅包含.csv具有相同參數(shù)的文件并將它們添加到數(shù)據(jù)框中。但是,我的問題是我不知道如何繼續(xù)獲得平均值。我當(dāng)前的代碼和輸出代碼:import pandas as pdimport osdir = "/Users/luke/Desktop/testfolder"files = os.listdir(dir)files_of_interests = {}for filename in files:    if filename[-4:] == '.csv':        key = filename[:-5]        files_of_interests.setdefault(key, [])        files_of_interests[key].append(filename)print(files_of_interests)for key in files_of_interests:    stack_df = pd.DataFrame()    print(stack_df)    for filename in files_of_interests[key]:        stack_df = stack_df.append(pd.read_csv(os.path.join(dir, filename)))    print(stack_df)輸出:Empty DataFrameColumns: []Index: []    Unnamed: 0  Wavelength       S2c  Wavelength.1        S20            0        1100  0.000342          1100  0.0003041            1        1110  0.000452          1110  0.0004102            2        1120  0.000468          1120  0.0004303            3        1130  0.000330          1130  0.0003064            4        1140  0.000345          1140  0.000323[164 rows x 5 columns]在這里提問!所以我的問題是,如何讓它分別為每個(gè)S2cand向右追加S2?解釋:對(duì)于具有相同標(biāo)頭名稱的多個(gè) .csv 文件,當(dāng)我將其附加到列表時(shí),它只是不斷堆疊到前一個(gè)文件的底部,.csv這導(dǎo)致了[164 rows x 5 columns]上一節(jié)的 。我最初的想法是創(chuàng)建一個(gè)新的數(shù)據(jù)框,并且只從這些文件中的每一個(gè)附加S2c和,這樣它就不會(huì)將它們堆疊在一起,而是將它們作為新列繼續(xù)附加到右側(cè)。之后,我可以進(jìn)行某種形式的 pandas 列操作,將它們相加并除以運(yùn)行次數(shù)(這只是文件數(shù),因此在第二個(gè)FOR 循環(huán)下)。S2.csvlen(files_of_interests[key])我試過的我嘗試創(chuàng)建一個(gè)空數(shù)據(jù)框并添加一個(gè)從np.arange(1100,1500,10)使用pd.DataFrame.from_records(). 并按照我在上一節(jié)中描述的那樣將S2cand附加S2到數(shù)據(jù)框。發(fā)生了同樣的問題,除此之外,它還產(chǎn)生了一堆 Nan 值,即使在進(jìn)一步搜索之后我也沒有足夠的能力來處理這些值。我已經(jīng)閱讀了此處發(fā)布的其他多個(gè)問題,許多人建議使用,pd.concat但由于答案是針對(duì)不同情況量身定制的,我無法真正復(fù)制它,也無法理解它的文檔,所以我停止了這條路。預(yù)先感謝您的幫助!附加信息我在代碼中使用 macOS 和 ATOM??梢栽诖颂幷业?csv 文件!github: https://github.com/teoyi/PROJECT-Automate-Research-Process
查看完整描述

3 回答

?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

IIUC 你有:

  • 一堆 csv 文件,每個(gè)文件包含同一個(gè)實(shí)驗(yàn)的結(jié)果

  • 第一個(gè)相關(guān)列始終包含從 0 到 40 的數(shù)字(因此每個(gè)文件有 41 行)

  • Wavelenght 和 Wavelength.1 列始終包含從 1100 到 1500 的相同值,增量為 10

  • 在第一個(gè)相關(guān)列之前可能存在其他列

  • 第一列在 csv 文件中沒有名稱,直到第一個(gè)相關(guān)的名稱以'Unnamed: '

并且您想獲得相同波長(zhǎng)值的 S2 和 S2c 列的平均值。

groupby這可以簡(jiǎn)單地用and完成mean,但我們首先必須過濾掉所有不需要的列??梢酝ㄟ^ 的index_colandusecols參數(shù)來實(shí)現(xiàn)read_csv

...

print(files_of_interests)


# first concat the datasets:

dfs = [pd.read_csv(os.path.join(dir, filename), index_col=1,

                   usecols=lambda x: not x.startswith('Unnamed: '))

       for key in files_of_interests for filename in files_of_interests[key]]

df = pd.concat(dfs).reset_index()


# then take the averages

df = df.groupby(['Wavelength', 'Wavelength.1']).mean().reset_index()


# reorder columns and add 1 to the index to have it to run from 1 to 41

df = df.reindex(columns=['Wavelength', 'S2c', 'Wavelength.1', 'S2'])

df.index += 1

如果結(jié)果 df 中仍然有不需要的列,這個(gè)神奇的命令將有助于識(shí)別具有奇怪結(jié)構(gòu)的原始文件:


import pprint


pprint.pprint([df.columns for df in files])

使用 github testfolder 中的文件,它給出:


[Index(['Unnamed: 0', 'Wavelength', 'S2c', 'Wavelength.1', 'S2'], dtype='object'),

 Index(['Unnamed: 0', 'Wavelength', 'S2c', 'Wavelength.1', 'S2'], dtype='object'),

 Index(['Unnamed: 0', 'Wavelength', 'S2c', 'Wavelength.1', 'S2'], dtype='object'),

 Index(['Unnamed: 0', 'Wavelength', 'S2c', 'Wavelength.1', 'S2'], dtype='object'),

 Index(['Unnamed: 0', 'Unnamed: 0.1', 'Wavelength', 'S2c', 'Wavelength.1',

       'S2'],

      dtype='object'),

 Index(['Unnamed: 0', 'Wavelength', 'S2c', 'Wavelength.1', 'S2'], dtype='object')]

它明確表示第五個(gè)文件作為附加列。


查看完整回答
反對(duì) 回復(fù) 2023-04-18
?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

如果您有數(shù)據(jù)框列表,例如:


import pandas as pd

data = {'col_1': [3, 2, 1, 0], 'col_2': [3, 1, 2, 0]}

dflist = [pd.DataFrame.from_dict(data) for _ in range(5)]

你可以做:


pd.concat(dflist,axis=1)

這看起來像:

http://img1.sycdn.imooc.com//643e061a00010ec905610156.jpg

如果要在每個(gè)列名后附加一個(gè)數(shù)字,表明df它們來自哪個(gè)列,在 之前concat,請(qǐng)執(zhí)行以下操作:

for index, df in enumerate(dflist):
    df.columns = [col+'_'+str(index) for col in df.columns]

然后pd.concat(dflist,axis=1),結(jié)果:

http://img1.sycdn.imooc.com//643e062600013a1f06540147.jpg

雖然我無法重現(xiàn)您的文件系統(tǒng)并確認(rèn)它是否有效,但要從您的文件創(chuàng)建以上內(nèi)容dflist,類似這樣的方法應(yīng)該有效:


dflist = []

for key in files_of_interests:

    print(stack_df)

    for filename in files_of_interests[key]:

        dflist.append( pd.read_csv(os.path.join(dir, filename)) )


查看完整回答
反對(duì) 回復(fù) 2023-04-18
?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊

想要的是:

  1. 鍵值對(duì)中每個(gè)文件的相應(yīng) S2c 和 S2 列將合并到一個(gè).csv文件中以供進(jìn)一步操作。

  2. 刪除冗余列以僅顯示范圍從 1100 到 1500 的單個(gè)列,Wavelength增量為 10。

這需要使用pd.concat@zabop 和 @SergeBallesta 介紹的 which 如下所示:

for key in files_of_interests:

? ? list = []

? ? for filename in files_of_interests[key]:

? ? ? ? list.append(pd.read_csv(os.path.join(dir,filename)))

? ? ? ? df = pd.concat(list, axis = 1)

? ? ? ? df = df.drop(['Unnamed: 0', 'Wavelength.1'], axis = 1)

? ? ? ? print(df)

? ? ? ? df.to_csv(os.path.join(dir + '/', f"{filename[:-5]}_master.csv"))

我必須使用files_of_interests[key]它才能讀取文件名并且必須pd.read_csv讀取正確的路徑。除此之外,我添加axis = 1到pd.concatwhich 允許它與 for 循環(huán)一起水平連接以正確訪問文件名。(我已經(jīng)仔細(xì)檢查了這些值,它們確實(shí)與相應(yīng)的文件匹配.csv。)


輸出.csv看起來像這樣:

http://img1.sycdn.imooc.com/643e064a000143f506600234.jpg


查看完整回答
反對(duì) 回復(fù) 2023-04-18
  • 3 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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