Python Pandas Копирование столбцов - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь очистить фрейм данных, используя Pandas, и мне нужно извлечь эти строки с идентификатором, именем и количеством точек и поместить их в новые столбцы с именованным идентификатором, именем и num_pts.

Мне нужно сделать логическое индексирование для новых столбцов после.

Я пытался создать новый столбец на основе другого столбца, подобного этому hurricane_df['new_col'] = hurricane_df['col'], но при попытке индексировать new_col он также индексировал исходный столбец.

Это то, что у меня сейчас есть

enter image description here

Так должны выглядеть данные после

enter image description here

Спасибо за любую помощь

import os
import pandas as pd
from urllib.request import urlretrieve
url = "https://www.nhc.noaa.gov/data/hurdat/hurdat2-1851-2017-050118.txt"
local_fname = "hurdat2.txt"
if not os.path.exists("hurdat2.txt"):
    urlretrieve(url, local_fname)


low_memory=False
hurricane_df = pd.read_csv("hurdat2.txt",engine='python', 
delim_whitespace=True,names = 
['date','time','record_id','status','latitude','longitude','max_wind',
'min_pressure','ne34ktr','se34ktr','sw34ktr','nw34ktr','ne50ktr','se50ktr',
'sw50ktr','nw50ktr','ne64ktr','se64ktr','sw64ktr','nw64ktr']
,header = None)

hurricane_df["identifier"] = hurricane_df["date"].copy()
hurricane_df[(hurricane_df['identifier'].str.contains('AL'))]

edit: В конечном итоге я хочу вычеркнуть эти строки с идентификатором, именем и числом точек и поместить их в новые столбцы с именем named identifier., имя и num_pts.Поэтому я начал с того, что взял столбец даты и добавил эти значения в столбец идентификатора и проанализировал столбец идентификатора со строками, которые начинаются только с AL, чтобы получить только строки идентификатора.

Однако произошло то, что столбец даты все еще менялся.

После того, как я сделаю это, я хочу заполнить это точками отслеживания, удалить строки только с информацией идентификатора (которая идет в новом столбце даты, который я также извлеку из даты, отрицая AL(~), чтобы получить только информацию идентификатора, а затем переупорядочить столбцы в начале кадра данных (df [['c4', 'c5', 'c1', 'c2', 'c3']).

1 Ответ

0 голосов
/ 15 ноября 2018

Это только частично отвечает на ваш вопрос, но я надеюсь, что это будет полезно:

Я попытался создать новый столбец на основе другого столбца, такого как этот ураган_df ['new_col'] = hurricane_df ['col'], но при попытке индексировать new_col он также индексирует исходный столбец col.

Чтобы избежать этой ошибки, используйте

hurricane_df["new_column"] = hurricane_df["old_column"].copy()

. В Python выполнение variable_a = variable_b не будет копировать значение variable_b и присваивать его variable_a.Он просто создаст новое имя, которое будет привязано к тому же объекту, связанному с variable_a.

Например, если вы выполните

a = 2
b = a
a = a + 1
print(b)

, вы получите 3.Это называется «передача по ссылке»;другие языки имеют «передачу по значению».

Если вы объясните более подробно, какова ваша конечная цель, мы могли бы найти способ помочь вам (добавление строк, содержащихся в кадре данных, так как новые столбцы звучат немного страннои, может быть, есть лучший способ сделать то, что вы хотели сделать в первую очередь).

...