#python #pandas #string
#python #pandas #строка
Вопрос:
Я пытаюсь извлечь одну строку данных из моего фрейма данных, созданного из файла csv, доступ к которому осуществляется через URL.
URL = 'http://www.bom.gov.au/clim_data/cdio/tables/text/IDCJCM0033_091126.csv'
s = requests.get(URL).content
df1 = pd.read_csv(io.StringIO(s.decode('utf-8')), sep=',', escapechar='\', skiprows=11)
Я использую…
df1['Statistic Element'].str.contains('Mean rainfall')
…чтобы определить строку, содержащую требуемые мне данные, однако python не распознает элемент .str фрейма данных?
Код отлично работает с использованием тестового фрейма данных, поэтому мне интересно, есть ли проблема с csv?
Комментарии:
1. Вы уверены, что слова будут найдены в столбце? Попробуйте
import re
и передайтеflags=re.IGNORECASE
вcontains
2. Пожалуйста, опубликуйте
df.info()
Ответ №1:
удалите decode
и StringIO
и повторите попытку. здесь я загрузил ваш файл ‘.csv’ и переименовал его в «cs.csv». в этом нет ничего плохого:
from pandas import
df = pd.read_csv('cs.csv', sep=',', escapechar='\', skiprows=11)
# even do not need sep and escapechar.
>>> df['Statistic Element'].str.contains('Mean rainfall')
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 False
11 False
12 False
13 False
14 False
15 False
16 False
17 False
18 False
19 False
20 False
21 False
22 False
23 True
24 False
25 False
26 False
27 False
28 False
29 False
30 False
31 False
32 False
33 False
34 False
35 False
36 False
37 False
38 False
39 False
40 False
41 False
42 False
43 False
44 False
45 False
46 False
47 False
48 False
49 False
50 False
51 False
52 False
53 False
54 False
55 False
56 False
Name: Statistic Element, dtype: bool
Комментарии:
1. Спасибо.. это работает. Есть ли относительно краткое объяснение, почему ‘decode’ и ‘StringIO’ вызывают проблему. Или я просто делал что-то простое сложным способом?
2. @SimonMitchell на самом деле, вам лучше не кодировать то, что не нужно. просто помните, что простое лучше, чем сложное. Сложный лучше, чем запутанный.