[問題] df.groups後無法to_excel
想請問
我有一個dic是用groupby結合後,再用 .groups得到的
但是想要把這結果 to_excel
會跑出AttributeError: 'PrettyDict' object has no attribute 'to_excel'
如果用
for k,v in df.items():
print("key",k , "value:",v)
把key跟value一個一個列出來
會變成類似這樣
key 電機機械 value: Int64Index([1513, 1526, 2066], dtype='int64',
name='stock_id')
實際數據只有key=電機機械, value = [1513, 1526, 2066]
卻還有Int64Index... 等
請問這是什麼原因呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.90.63 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1662888463.A.CC3.html
→
09/11 17:38,
2年前
, 1F
09/11 17:38, 1F
→
09/11 17:38,
2年前
, 2F
09/11 17:38, 2F
請問我的代碼如下
lists = [1218, 1402, 1444, 1513, 1526, 1536, 1712, 2066, 2231, 2305, 2380,
2387, 2413, 2538, 2542, 2850, 3022, 3202, 3296, 3322, 3346, 3680, 3710, 4114,
4402, 4743, 5353, 5498, 6279, 6285, 6570, 6605, 8069, 8105, 8403, 9802, 9907]
import pandas as pd
import os
os.chdir(r'C:\python\xlsx')
a = pd.DataFrame(lists)
a.set_axis(['stock_id'], axis='columns',inplace=True)
b = pd.read_excel('產業類別.xlsx')
data = a.merge(b, on='stock_id')
data.set_index(['stock_id'], inplace=True)
e = data.groupby('產業類別')
f = e.groups
print(f)
如果我print(f)會得到這樣:
{'光電業': [8069, 8105], '其他': [9802, 9907], '化學工業': [1712], '半導體業
': [3680], '建材營造': [2538, 2542], '汽車工業': [1536, 2231, 3346, 6605], '生
技醫療業': [4114, 4743, 8403], '紡織纖維': [1402, 1444, 4402], '通信網路業':
[5353, 6285], '金融保險業': [2850], '電子零組件業': [2413, 3202, 3296, 3322,
3710, 5498, 6279], '電機機械': [1513, 1526, 2066], '電腦及週邊設備業': [2305,
2380, 2387, 3022, 6570], '食品工業': [1218]}
但如果DataFrame後格式會跑掉
而且還是貼不上excel
用for k,v in f.items():
print(k + ' = ',v)
結果會是這樣:
光電業 = Int64Index([8069, 8105], dtype='int64', name='stock_id')
其他 = Int64Index([9802, 9907], dtype='int64', name='stock_id')
化學工業 = Int64Index([1712], dtype='int64', name='stock_id')
半導體業 = Int64Index([3680], dtype='int64', name='stock_id')
建材營造 = Int64Index([2538, 2542], dtype='int64', name='stock_id')
汽車工業 = Int64Index([1536, 2231, 3346, 6605], dtype='int64',
name='stock_id')
生技醫療業 = Int64Index([4114, 4743, 8403], dtype='int64', name='stock_id')
紡織纖維 = Int64Index([1402, 1444, 4402], dtype='int64', name='stock_id')
通信網路業 = Int64Index([5353, 6285], dtype='int64', name='stock_id')
金融保險業 = Int64Index([2850], dtype='int64', name='stock_id')
電子零組件業 = Int64Index([2413, 3202, 3296, 3322, 3710, 5498, 6279],
dtype='int64', name='stock_id')
電機機械 = Int64Index([1513, 1526, 2066], dtype='int64', name='stock_id')
電腦及週邊設備業 = Int64Index([2305, 2380, 2387, 3022, 6570], dtype='int64',
name='stock_id')
食品工業 = Int64Index([1218], dtype='int64', name='stock_id')
也貼不上excel
請問我該怎麼轉才能把(k + ' = ',v)這結果貼到excel上呢?
謝謝
※ 編輯: Pettitte1 (59.115.90.63 臺灣), 09/11/2022 18:10:50
推
09/11 20:09,
2年前
, 3F
09/11 20:09, 3F
→
09/11 20:11,
2年前
, 4F
09/11 20:11, 4F
→
09/11 22:30,
2年前
, 5F
09/11 22:30, 5F
→
09/11 22:30,
2年前
, 6F
09/11 22:30, 6F
我想要儲存成excel
A B C
1 光電業 化學工業
2 8069 1712
3 8105
謝謝
※ 編輯: Pettitte1 (27.247.201.78 臺灣), 09/12/2022 08:53:45
→
09/12 09:43,
2年前
, 7F
09/12 09:43, 7F
→
09/12 09:43,
2年前
, 8F
09/12 09:43, 8F
→
09/12 09:43,
2年前
, 9F
09/12 09:43, 9F
推
09/12 11:05,
2年前
, 10F
09/12 11:05, 10F
推
09/12 12:21,
2年前
, 11F
09/12 12:21, 11F
後來是將groupby.groups
使用pd.DataFrame.from_dict(groupby.groups, orient='index')
再轉成dataframe解決的
謝謝各位幫忙
※ 編輯: Pettitte1 (27.247.201.78 臺灣), 09/14/2022 13:43:15