我在嘗試對df中的記錄進行分組并對其中一列的數值進行堆疊時遇到了一個死胡同。 我有一個大約39萬條記錄的DF,其形狀如下:
df = pd.DataFrame({
'Województwo': {14: '?óDZKIE', 15: '?óDZKIE'}。
'Powiat': {14: 'be?chatowski', 15: 'be?chatowski'}。
'Gmina': {14: 'Be?chatów', 15: 'Be?chatów'},
'Miejscowo??(GUS)': {14: 'Be?chatów', 15: 'Be?chatów'},
'Ulica (cecha)': {14: 'al. ', 15: 'al.'}。
'Ulica (nazwa)': {14: 'Aleja ks. Kardyna?a Stefana Wyszyńskiego', 15: 'Aleja ks. Kardyna?a Stefana Wyszyńskiego'}。
'Kod pocztowy(PNA)': {14: '97-400', 15: '97-402'}。
'Kod województwa': {14: 'vosti_province_lodzkie',15: 'vosti_province_lodzkie'}。
'Kod powiatu': {14: 'district_lodzkie_belchatowski',15: 'district_lodzkie_belchatowski'}。
'Kod gminy': {14: 'commune_belchatowski_belchatow',15: 'commune_belchatowski_belchatow'}。
'Kod miejscowo?ci': {14: 'town_belchatow_belchatow',15: 'town_belchatow_belchatow'}。
'Kod cechy adresu': {14: 'address_prefix_al', 15: 'address_prefix_al'}。
'Kod adresu': {14: 'address_belchatow_aleja_ks_kardynala_stefana_wyszynskiego',15:'address_belchatow_aleja_ks_kardynala_stefana_wyszynskiego'}})
我想在堆積 "Kod pocztowy (PNA) "列中的值時擺脫重復的東西。為了做到這一點,我想出了這樣一行:
db_miasto = pd.DataFrame(db. groupby(['Województwo', 'Powiat', 'Gmina', 'Miejscowo??(GUS)', 'Kod gminy', 'Kod miejscowo?ci'], as_index=False)['Kod pocztowy(PNA)'] 。 apply(lambda x: ",".join(x))
在示例記錄中,它確實可以作業,給我的是這樣的df:
在示例記錄中,它確實可以作業。
final_df = pd.DataFrame(
{'Województwo': {0: '?óDZKIE'},
'Powiat'/span>: {0: 'be?chatowski'}。
'Gmina': {0: 'Be?chatów'},
'Miejscowo??(GUS)': {0: 'Be?chatów'},
'Kod gminy': {0: 'commune_belchatowski_belchatow'},
'Kod miejscowo?ci': {0: 'town_belchatow_belchatow'},
'Kod pocztowy(PNA)': {0: '97-400,97-402'}})
而這正是我所期待的結果。然而...
如果我試著在394k條記錄的整個df上運行同一個公式,我遇到了一個錯誤:
TypeError: sequence item 8: expected str instance, float found
---------------------------------------------------------------------------
TypeError 回溯(最近的一次呼叫)。
/opt/anaconda3/envs/Productive24_SPK/lib/python3.8/site-packages/pandas/core/groupby/groupby.py in apply(self, func, *args, **kwargs)
1252 try:
-> 1253 result = self._python_apply_general(f, self._selected_obj)
1254 except TypeError:
/opt/anaconda3/envs/Productive24_SPK/lib/python3.8/site-packages/pandas/core/groupby/groupby.py in _python_apply_general(self, f, data)
1286 ""
-> 1287 keys, values, mutated = self.grouper.apply(f, data, self.axis)
1288
/opt/anaconda3/envs/Productive24_SPK/lib/python3.8/site-packages/pandas/core/groupby/ops.py in apply(self, f, data, axis)
819 group_axes = group.axes
--> 820 res = f(group)
821 如果不是_is_indexed_like(res, group_axes, axis)。
/var/folders/w1/ghc7r0mx6mj933lyktx82w480000gn/T/ipykernel_79776/2296150702.py in <lambda>(x)
----> 1 db_miasto = pd.DataFrame(db.groupby(['Województwo', 'Powiat', 'Gmina', 'Miejscowo??(GUS)', 'Kod gminy', 'Kod miejscowo?ci'], as_index=False) ['Kod pocztowy(PNA)'].apply(lambda x。",".join(x)))
TypeError: 序列第8項:預期的str實體,發現float
在處理上述例外的程序中,發生了另一個例外。
TypeError 回溯(最近的一次呼叫)。
/var/folders/w1/ghc7r0mx6mj933lyktx82w480000gn/T/ipykernel_79776/2296150702.py in <module>
----> 1 db_miasto = pd.DataFrame(db.groupby(['Województwo', 'Powiat', 'Gmina', 'Miejscowo??(GUS)', 'Kod gminy', 'Kod miejscowo?ci'], as_index=False) ['Kod pocztowy(PNA)'].apply(lambda x: ",".join(x)))
/opt/anaconda3/envs/Productive24_SPK/lib/python3.8/site-packages/pandas/core/groupby/groupby.py in apply(self, func, *args, **kwargs)
1262
1263 with group_selection_context(self):
-> 1264 return self._python_apply_general(f, self._selected_obj)
1265
1266 回傳結果
/opt/anaconda3/envs/Productive24_SPK/lib/python3.8/site-packages/pandas/core/groupby/groupby.py in _python_apply_general(self, f, data)
1285 應用f后的資料
1286 """
-> 1287 keys, values, mutated = self.grouper.apply(f, data, self.axis)
1288
1289 return self._wrap_applied_output(
/opt/anaconda3/envs/Productive24_SPK/lib/python3.8/site-packages/pandas/core/groupby/ops.py in apply(self, f, data, axis)。
818 # group可能被修改。
819 group_axes = group.axes
--> 820 res = f(group)
821 if not _is_indexed_like(res, group_axes, axis)。
822 mutated =True
/var/folders/w1/ghc7r0mx6mj933lyktx82w480000gn/T/ipykernel_79776/2296150702.py in <lambda> (x)
----> 1 db_miasto = pd.DataFrame(db. groupby(['Województwo', 'Powiat', 'Gmina', 'Miejscowo??(GUS)', 'Kod gminy', 'Kod miejscowo?ci'], as_index=False)['Kod pocztowy(PNA)'] 。 apply(lambda x: ",".join(x)))
TypeError: 序列專案8: 預期的str實體,float發現
我試著修改了我的公式,用.apply(lambda x: ",".join(str(x)))在那個lambda函式中,它確實沒有錯誤地通過了整個檔案,但回傳的結果是這樣的:
wrong_df = pd.DataFrame({
'Województwo': {0: '?óDZKIE'},
'Powiat'/span>: {0: 'be?chatowski'}。
'Gmina': {0: 'Be?chatów'},
'Miejscowo??(GUS)': {0: 'Be?chatów'},
'Kod gminy': {0: 'commune_belchatowski_belchatow'},
'Kod miejscowo?ci': {0: 'town_belchatow_belchatow'},
'Kod pocztowy(PNA)': {0: '1,4, , , , ,9,7,-,4,0,0,
,1,5, , , , ,9,7,-,4,0,2,
,N,a,m,e,。 , , (,?,ó,D,Z,K,I,E,, ,B,e,?,c,h,a,t,o,w,s,k,i,, ,B,e,?,c,h,a,t,ó,w,, ,C,o,m,u,N, e,_,b,e,l,c,h,a,t,o,w,s,k,i,_,b,e,l,c,h,a,t,o,w,, ,t,o,w,n,_,b,e,l,c,h,a,t,o,w,_,b,e,l,c,h,a,t,o,w,),,,,d,t,y,p,e,。 , ,o,b,j,e,c,t'}})
這就是一些徹頭徹尾的胡說八道......
我不知道該怎么做。
我不知道如何解釋 "序列專案8",也不知道如何檢查,這到底是df的哪一部分...... 我檢查了列的型別,它應該是字串而不是浮動的:
Województwo object。
Powiat 物件。
鄉鎮物件
Miejscowo?? (GUS) 物體 物體
Ulica (cecha) 物體。
Ulica (nazwa) 物體。
鑰匙(PNA) 物件 鑰匙(Kod pocztowy)
編碼(Kod województwa) 物件 編碼(Kod województwa)
仔細觀察 物體 物體
識別出你的身份 物體 識別出你的身份 物體
如何處理好與客戶的關系 物件 物件
識別和管理物件。
識別和管理物件。
d型別。object object
我在這個專案上的時間真的不多了,因此來這里尋求幫助。有什么辦法可以解決這個問題,或者有什么其他方法可以按照描述的方式堆積重復的行?
預先感謝!
uj5u.com熱心網友回復:
你可以先將該列轉化為字串:
df["Kod pocztowy (PNA)"] = df["Kod pocztowy (PNA)"].astype(str)
db_miasto = pd.DataFrame(
df.groupby(
[
"Województwo",
"Powiat",
"Gmina",
"Miejscowo??(GUS)"。
"Kod gminy",
"Kod miejscowo?ci",
],
as_index=False。
)["Kod pocztowy (PNA)"].apply(",".join)
)
印刷品:
Województwo Powiat Gmina Miejscowo?? (GUS) Kod gminy Kod miejscowo?ci Kod pocztowy (PNA)
0 ?óDZKIE Be?chatowski Be?chatów Be?chatów社區_belchatowski_belchatow鎮_belchatow_belchatow 97-400,97-402
uj5u.com熱心網友回復:
這是型別的差異性。 主要的問題是--你想要groupby
的值。正如你在你的例子中看到的,PNA是字串。
{14: '97-400', 15: '97-402'}。
因此,將整體的資料框架鑄成字串:
df["Kod pocztowy (PNA)"] = df["Kod pocztowy (PNA)"].astype(str)
以后groupBy的操作不應該出錯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/332417.html
標籤:
