Tôi có các giá trị phân tách bằng ống như thế này:
https|clients4.google.com|application/octet-stream|2296|
https|clients4.google.com|text/html; charset=utf-8|0|
....
....
https|clients4.google.com|application/octet-stream|2291|
Tôi phải tạo một gấu trúc
>>> import pandas as pd
>>> pd.read_csv['data.csv', sep='|', index_col=False,
names=['protocol', 'server', 'type', 'value']]
Out[7]:
protocol server type value
0 https clients4.google.com application/octet-stream 2296
1 https clients4.google.com text/html; charset=utf-8 0
2 https clients4.google.com application/octet-stream 2291
6 trong số dữ liệu này, với mỗi cột được đặt một tên.
Asclepius
52.9K16 Huy hiệu vàng154 Huy hiệu bạc137 Huy hiệu đồng16 gold badges154 silver badges137 bronze badges
Đã hỏi ngày 6 tháng 1 năm 2014 lúc 12:23Jan 6, 2014 at 12:23
Bạn đi đây:
>>> import pandas as pd
>>> pd.read_csv['data.csv', sep='|', index_col=False,
names=['protocol', 'server', 'type', 'value']]
Out[7]:
protocol server type value
0 https clients4.google.com application/octet-stream 2296
1 https clients4.google.com text/html; charset=utf-8 0
2 https clients4.google.com application/octet-stream 2291
Đã trả lời ngày 6 tháng 1 năm 2014 lúc 12:31Jan 6, 2014 at 12:31
Elyaseelyaseelyase
38.1k11 Huy hiệu vàng106 Huy hiệu bạc117 Huy hiệu đồng11 gold badges106 silver badges117 bronze badges
Trong bài viết này, chúng tôi sẽ thảo luận về cách đọc tệp CSV với các loại phân cách khác nhau với DataFrame.
Thư viện Python sườn Pandas cung cấp một chức năng để tải tệp CSV vào DataFrame, tức là.
pandas.read_csv[filepath_or_buffer, sep=', ', delimiter=None, header='infer', names=None, index_col=None, ....]
Nó đọc nội dung của tệp CSV tại đường dẫn đã cho, sau đó tải nội dung vào DataFrame và trả về điều đó. Nhưng chúng tôi cũng có thể chỉ định phân tách tùy chỉnh hoặc biểu thức thông thường được sử dụng làm dấu phân cách tùy chỉnh.
Để sử dụng pandas.read_csv [] Nhập mô -đun pandas, tức là.
import pandas as pd
Sử dụng read_csv [] với dấu phân cách tùy chỉnh
Giả sử chúng ta có một tệp ‘user.csv‘ trong đó các cột được phân tách bằng chuỗi ‘__, như thế này. Nội dung của tệp user.csv như sau,users.csv‘ in which columns are separated by string ‘__’ like this.
Contents of file users.csv are as
follows,
Name__Age__City jack__34__Sydeny Riti__31__Delhi Aadi__16__New York Suse__32__Lucknow Mark__33__Las vegas Suri__35__Patna
Bây giờ để tải loại tệp này vào đối tượng DataFrame bằng pandas.read_csv [], chúng ta phải chuyển các đối số SEP & Engine cho pandas.read_csv [], tức là.sep & engine arguments to pandas.read_csv[] i.e.
# Read a csv file to a dataframe with custom delimiter usersDf = pd.read_csv['users.csv', sep='__' , engine='python'] print['Contents of Dataframe : '] print[usersDf]
Đầu ra:
Contents of Dataframe : Name Age City 0 jack 34 Sydeny 1 Riti 31 Delhi 2 Aadi 16 New York 3 Suse 32 Lucknow 4 Mark 33 Las vegas 5 Suri 35 Patna
Ở đây, đối số SEP sẽ được sử dụng làm dấu phân cách hoặc dấu phân cách. Nếu đối số SEP không được chỉ định thì động cơ mặc định để phân tích cú pháp [động cơ c] sẽ được sử dụng để sử dụng ',' làm dấu phân cách. & NBSP; Nhận cảnh báo như thế này,sep argument will be used as separator or delimiter. If sep argument is not specified then default engine for parsing [ C Engine] will be used which uses ‘,’ as delimiter. So, while specifying the custom sep argument we must specify the engine argument as ‘python’, otherwise we will get warning like this,
ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators [separators > 1 char and different from '\s+' are interpreted as regex];
Bạn có thể tránh cảnh báo này bằng cách chỉ định động cơ = xông Python.engine=’python’.
Quảng cáo
Sử dụng read_csv [] với khoảng trắng hoặc tab làm dấu phân cách
Như chúng ta đã thấy trong ví dụ ở trên, rằng chúng ta có thể vượt qua các dấu phân cách tùy chỉnh. Bây giờ giả sử chúng ta có một tệp trong đó các cột được phân tách bằng không gian trắng hoặc tab, tức là nội dung của tệp user_4.csv là,
Contents of file users_4.csv are,
Name Age City jack 34 Sydeny Riti 31 Delhi
Bây giờ, để tải loại tệp này vào DataFrame với pandas.read_csv [] Pass ‘\ s+, làm dấu phân cách. Ở đây \ S+ có nghĩa là bất kỳ một hoặc nhiều ký tự không gian trắng.‘\s+’ as separator. Here \s+ means any one or more white space character.
# Read a csv file to a dataframe with delimiter as space or tab usersDf = pd.read_csv['users_4.csv', sep='\s+', engine='python'] print['Contents of Dataframe : '] print[usersDf]
Nội dung của DataFrame được trả về,
>>> import pandas as pd
>>> pd.read_csv['data.csv', sep='|', index_col=False,
names=['protocol', 'server', 'type', 'value']]
Out[7]:
protocol server type value
0 https clients4.google.com application/octet-stream 2296
1 https clients4.google.com text/html; charset=utf-8 0
2 https clients4.google.com application/octet-stream 2291
0Sử dụng read_csv [] với biểu thức thông thường cho các dấu phân cách
Giả sử chúng ta có một tệp trong đó nhiều trình phân cách char được sử dụng thay vì một tệp duy nhất. Giống,
Nội dung của tệp user_5.csv là,users_5.csv are,
>>> import pandas as pd
>>> pd.read_csv['data.csv', sep='|', index_col=False,
names=['protocol', 'server', 'type', 'value']]
Out[7]:
protocol server type value
0 https clients4.google.com application/octet-stream 2296
1 https clients4.google.com text/html; charset=utf-8 0
2 https clients4.google.com application/octet-stream 2291
1Bây giờ, để tải loại tệp này vào DataFrame với read_csv [] vượt qua một biểu thức chính quy, tức là '[:, | _]' trong đối số SEP. phân tách tức là
>>> import pandas as pd
>>> pd.read_csv['data.csv', sep='|', index_col=False,
names=['protocol', 'server', 'type', 'value']]
Out[7]:
protocol server type value
0 https clients4.google.com application/octet-stream 2296
1 https clients4.google.com text/html; charset=utf-8 0
2 https clients4.google.com application/octet-stream 2291
2Đầu ra:
Contents of Dataframe : Name Age City 0 jack 34 Sydeny 1 Riti 31 Delhi 2 Aadi 16 New York 3 Suse 32 Lucknow 4 Mark 33 Las vegas 5 Suri 35 Patna
Ở đây, đối số SEP sẽ được sử dụng làm dấu phân cách hoặc dấu phân cách. Nếu đối số SEP không được chỉ định thì động cơ mặc định để phân tích cú pháp [động cơ c] sẽ được sử dụng để sử dụng ',' làm dấu phân cách. & NBSP; Nhận cảnh báo như thế này,
>>> import pandas as pd
>>> pd.read_csv['data.csv', sep='|', index_col=False,
names=['protocol', 'server', 'type', 'value']]
Out[7]:
protocol server type value
0 https clients4.google.com application/octet-stream 2296
1 https clients4.google.com text/html; charset=utf-8 0
2 https clients4.google.com application/octet-stream 2291
4Output:
Bạn có thể tránh cảnh báo này bằng cách chỉ định động cơ = xông Python.