Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—将dataframe单元格内的数据取出到另一个单元格中_Python_Pandas_Dataframe_Data Science_Data Analysis - Fatal编程技术网

Python—将dataframe单元格内的数据取出到另一个单元格中

Python—将dataframe单元格内的数据取出到另一个单元格中,python,pandas,dataframe,data-science,data-analysis,Python,Pandas,Dataframe,Data Science,Data Analysis,这是具有14列的dataframe的单个单元格中的数据。单元格是列的元素。有45k+这样的电池,手工操作简直是地狱 我想用这间牢房做三件事: 将带有地址、状态、zip的文本部分移动到另一列 删除单元格的钩子() 将经度和纬度分开两列 如何做到这一点?下面是一个简单的工作示例,包含两个数据点: text1 = """30881 EKLUTNA LAKE RD CHUGIAK, AK 99567 (61.4478, -149.3136)""" text2 = """30882 FAKE STR

这是具有14列的dataframe的单个单元格中的数据。单元格是列的元素。有45k+这样的电池,手工操作简直是地狱

我想用这间牢房做三件事:

  • 将带有地址、状态、zip的文本部分移动到另一列
  • 删除单元格的钩子()
  • 将经度和纬度分开两列

  • 如何做到这一点?

    下面是一个简单的工作示例,包含两个数据点:

    text1 = """30881 EKLUTNA LAKE RD
    CHUGIAK, AK 99567
    (61.4478, -149.3136)"""
    
    text2 = """30882 FAKE STR
    CHUGIAK, AK 98817
    (43.4478, -119.3136)"""
    
    d = {'col1': [text1, text2]}
    
    df = pd.DataFrame(data=d)
    
    def fix(row):
      #We split the text by newline
      address, cp, latlong =  row.col1.split('\n')
    
      #We get the latitude and longitude by splitting by a comma
      latlong_vec = latlong[1:-1].split(',')
    
      #This part isn't really necessary but we create the variables for claity
      lat = float(latlong_vec[0])
      long = float(latlong_vec[1])
    
      return pd.Series([address + ". " + cp, lat, long])
    
    
    df[['full address', 'lat', 'long']] = df.apply(fix, axis = 1)
    
    3个新列的输出:

    df['full address']
    0    30881 EKLUTNA LAKE RD. CHUGIAK, AK 99567
    1           30882 FAKE STR. CHUGIAK, AK 98817
    
    df['lat']
    
    0    61.4478
    1    43.4478
    Name: lat, dtype: float64
    
    df['long']
    
    0   -149.3136
    1   -119.3136
    Name: long, dtype: float64
    

    名称:完整地址,数据类型:object

    但有一个小问题latlong=latlong[1:-1]。拆分(“,”)名称错误:名称“latlong”未定义是否正确复制?我在前一行定义了latlong。另外,您在“latlong_vec=latlong[1:-1].split(',')”时编写了“latlong=latlong[1:-1].split(',')。也就是说,我正在创建一个新变量latlong_vec。另外,备注:我的代码假设您的列没有丢失的数据(例如,所有(lat,long)对都存在)。如果不是这样,您需要调整修复()函数并添加一些try/catch子句或一些if来处理边界情况。我确信复制正确,但也确定问题在我身上。我将尝试深入挖掘它。因为您展示了路线图,我使用了我的变量,但在某些地方我错了。非常感谢Guillermo提供详细的答案!