這是哪門子的任務,在該pandas庫擅長:
import pandas as pd
df1 = pd.read_csv("c1.txt", sep="|", header=None).dropna()
df2 = pd.read_csv("c2.txt", sep=" ", header=None)
merged = df1.merge(df2, on=1).ix[:,:-1]
merged.to_csv("merged.csv", sep="|", header=None, index=None)
一些解釋如下。首先,我們在文件中讀取,爲對象稱爲DataFrames:
>>> df1 = pd.read_csv("c1.txt", sep="|", header=None).dropna()
>>> df1
0 1 2 3
0 ?parallel dog numbering position
3 ?parallel cat nuucers position
6 ?non parallel honey numbering position
>>> df2 = pd.read_csv("c2.txt", sep=" ", header=None)
>>> df2
0 1 2
0 23 dog 4
1 24 cat 5
2 28 cow 7
的.dropna()
跳過那裏沒有任何數據情況。或者,df1 = df1[df1[0].str.startswith("?")]
應該是另一種方式。
然後我們把它們合併第一列:
>>> df1.merge(df2, on=1)
0_x 1 2_x 3 0_y 2_y
0 ?parallel dog numbering position 23 4
1 ?parallel cat nuucers position 24 5
我們不需要那麼最後一列,所以我們分析它:
>>> df1.merge(df2, on=1).ix[:,:-1]
0_x 1 2_x 3 0_y
0 ?parallel dog numbering position 23
1 ?parallel cat nuucers position 24
,然後我們使用to_csv
寫出來,生產:
>>> !cat merged.csv
?parallel|dog|numbering|position|23
?parallel|cat|nuucers|position|24
現在,對於很多簡單的任務,pandas
可以矯枉過正,學習如何使用csv
模塊等更低級別的工具也很重要。 OTOH,當你只想完成某件事時,它非常非常方便。
來源
2013-03-27 16:24:14
DSM
看起來像第二列 – moooeeeep 2013-03-27 15:58:10
JOIN ..等等,什麼?所有這些沒有管道的管線從哪裏來? – DSM 2013-03-27 16:53:28
我是我的巨大的不同動物文件的數據集,只有一個文本文件包含這樣的數據,所以我想單獨處理它 – Rocket 2013-03-27 16:55:30