Поиск определенной строки в столбце фрейма данных

#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 фрейма данных?

DF1.info ()

Код отлично работает с использованием тестового фрейма данных, поэтому мне интересно, есть ли проблема с 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 на самом деле, вам лучше не кодировать то, что не нужно. просто помните, что простое лучше, чем сложное. Сложный лучше, чем запутанный.