Python Pandas复制列

时间:2018-11-15 00:35:24

标签: python database pandas dataframe data-cleaning

我正在尝试使用Pandas清理数据框,我需要提取出具有标识符,名称和点数的行,并将其放入名为标识符,名称和num_pts的新列中。

之后,我需要对新列进行布尔索引。

我尝试根据这样的另一列创建一个新列 hurricane_df['new_col'] = hurricane_df['col'],但是在尝试索引new_col时,它也会同时索引原始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:我最终想要做的是用标识符,名称和点数提取那些行,并将它们放在名为标识符,名称和num_pts的新列中。因此,我首先将date列添加到标识符列中,然后使用仅以AL开头的字符串来解析标识符列,以仅获取标识符行。

尽管发生了什么事,但日期栏仍在更改。

执行完此操作后,我想用跟踪点填充该行,删除仅包含标识符信息的行(该行也将出现在新的日期列中,该列也将从日期中提取出来,并取AL(〜))仅仅获取标识符信息,然后将列重新排列到数据框的前面(df [['c4','c5','c1','c2','c3'])。

1 个答案:

答案 0 :(得分:0)

这只能部分回答您的问题,但希望对您有所帮助:

  

我尝试根据像hurricane_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。这称为“引用传递”;其他语言具有“按价值传递”的功能。

如果您更详细地说明您的最终目标是什么,我们可能会找到一种方法来帮助您(随着新列听起来有些奇怪,将其中包含的行添加到数据框中,也许还有更好的方法来执行您的操作首先要做的事情。