我有一个 Pandas DataFrame,我想将 ‘lat’ 和 ‘long’ 列组合成一个元组。
<class 'pandas.core.frame.DataFrame'> Int64Index: 205482 entries, 0 to 209018 Data columns: Month 205482 non-null values Reported by 205482 non-null values Falls within 205482 non-null values Easting 205482 non-null values Northing 205482 non-null values Location 205482 non-null values Crime type 205482 non-null values long 205482 non-null values lat 205482 non-null values dtypes: float64(4), object(5)
我尝试使用的代码是:
def merge_two_cols(series): return (series['lat'], series['long']) sample['lat_long'] = sample.apply(merge_two_cols, axis=1)
但是,这返回了以下错误:
--------------------------------------------------------------------------- AssertionError Traceback (most recent call last) <ipython-input-261-e752e52a96e6> in <module>() 2 return (series['lat'], series['long']) 3 ----> 4 sample['lat_long'] = sample.apply(merge_two_cols, axis=1) 5
…
AssertionError: Block shape incompatible with manager
我怎么解决这个问题?
适应zip. 在处理列数据时它会派上用场。
zip
df['new_col'] = list(zip(df.lat, df.long))
它比使用applyor更简单、更快捷map。likenp.dstack的速度是 的两倍zip,但不会给你元组。
apply
map
np.dstack