簡體   English   中英

Pandas讀取沒有標題或索引的數據

[英]Pandas read data without header or index

這是.csv文件:

0   0   1   1   1   0   1   1   0   1   1   1   1
0   1   1   0   1   0   1   1   0   1   0   0   1
0   0   1   1   0   0   1   1   1   0   1   1   1
0   1   1   1   1   1   1   1   1   1   1   1   2
0   1   1   1   0   1   1   1   1   1   1   1   1
0   0   0   1   1   1   0   1   0   0   0   1   1
0   0   0   0   1   1   0   0   1   0   1   0   2
0   1   1   0   1   1   1   1   0   1   1   1   1
0   0   1   0   0   0   0   0   0   1   1   0   1
0   1   1   1   0   1   1   0   0   0   0   1   1

其中第一列必須是像(0,1,2,3,4 ...)這樣的索引,但由於某些原因它們是零。 使用pandas.read_csv讀取csv文件時是否有任何方法可以使它們正常?

我用

df = pd.read_csv(file,delimiter='\t',header=None,names=[1,2,3,4,5,6,7,8,9,10,11,12]) 

得到類似的東西:

    1   2   3   4   5   6   7   8   9   10  11  12
0   0   1   1   1   0   1   1   0   1   1   1   1
0   1   1   0   1   0   1   1   0   1   0   0   1
0   0   1   1   0   0   1   1   1   0   1   1   1
0   1   1   1   1   1   1   1   1   1   1   1   2
0   1   1   1   0   1   1   1   1   1   1   1   1
0   0   0   1   1   1   0   1   0   0   0   1   1
0   0   0   0   1   1   0   0   1   0   1   0   2
0   1   1   0   1   1   1   1   0   1   1   1   1
0   0   1   0   0   0   0   0   0   1   1   0   1
0   1   1   1   0   1   1   0   0   0   0   1   1

它幾乎是我需要的,但第一列(索引)仍為零。 例如,pandas可以忽略第一列零並自動生成新索引來獲取:

  0 1 2 3 4 5 6 7 8 9 10 11 12
0 0 1 0 1 1 0 0 0 1 1  1  0  1
1 0 1 0 1 1 0 0 0 1 1  1  1  2
2 0 1 1 1 0 0 1 1 1 1  1  1  2

您可能希望index_col=False

df = pd.read_csv(file,delimiter='\t', 
                 header=None, 
                 index_col=False) 

來自Docs

如果在每行末尾有一個帶有分隔符的格式錯誤的文件,您可能會考慮使用index_col = False來強制pandas 使用第一列作為索引

為什么對read_csv大驚小怪? 使用np.loadtxt

pd.DataFrame(np.loadtxt(file, dtype=int))

   0   1   2   3   4   5   6   7   8   9   10  11  12
0   0   0   1   1   1   0   1   1   0   1   1   1   1
1   0   1   1   0   1   0   1   1   0   1   0   0   1
2   0   0   1   1   0   0   1   1   1   0   1   1   1
3   0   1   1   1   1   1   1   1   1   1   1   1   2
4   0   1   1   1   0   1   1   1   1   1   1   1   1
5   0   0   0   1   1   1   0   1   0   0   0   1   1
6   0   0   0   0   1   1   0   0   1   0   1   0   2
7   0   1   1   0   1   1   1   1   0   1   1   1   1
8   0   0   1   0   0   0   0   0   0   1   1   0   1
9   0   1   1   1   0   1   1   0   0   0   0   1   1

默認分隔符是空格,默認情況下不讀入頭/索引。 由於dtype指定為int ,因此也不推斷列類型。 總而言之,這是一個非常簡潔和強大的替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM