我有一个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))
与使用apply或相比,它不那么复杂且速度更快map。诸如此类的np.dstack速度是的两倍zip,但不会给您元组。
apply
map
np.dstack