Python—将dataframe单元格内的数据取出到另一个单元格中
这是具有14列的dataframe的单个单元格中的数据。单元格是列的元素。有45k+这样的电池,手工操作简直是地狱 我想用这间牢房做三件事: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
如何做到这一点?下面是一个简单的工作示例,包含两个数据点:
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提供详细的答案!