簡體   English   中英

如何通過python格式化我的pandas數據框,以在csv輸出中獲取列?

[英]How do I format my pandas dataframe through python to get columns in the csv output?

我正在編寫代碼,以使餐廳的營業時間增加:

這是我的輸入代碼:

merge_HOO = my_list  
merge_HOO=pd.DataFrame([(merge_HOO)],
columns = ['day','start','end']) 
print(merge_HOO)
merge_HOO.to_csv('merge_HOO_test1.csv')

輸出:

    hours_type  is_open_now open
0   REGULAR FALSE   [{'start': '1100', 'end': '2200', 'day': 0}, {'start': '1100', 'end': '2200', 'day': 1}, {'start': '1100', 'end': '2200', 'day': 2}, {'start': '1100', 'end': '2200', 'day': 3}, {'start': '1100', 'end': '2200', 'day': 4}, {'start': '1100', 'end': '2200', 'day': 5}, {'start': '1100', 'end': '2100', 'day': 6}]

但是,我希望輸出看起來像第1列:標頭應該是'day' ,第2列: 'start' ,第3列: 'end'並且在每列下應該是各自的值。

運行代碼時,我也收到此錯誤:

con=len(content)))

AssertionError:傳遞了3列,傳遞的數據有1列

編輯:添加了my_list的外觀。

my_list = [{'open': [{'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 0},
           {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 1},
           {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 2},
           {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 3},
           {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 4},
           {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 5},
           {'is_overnight': False, 'start': '1100', 'end': '2100', 'day': 6}], 'hours_type': 'REGULAR',
  'is_open_now': False}]

for i in my_list[0]["open"]:
    del i["is_overnight"]

print(my_list)

我該怎么做呢?

您已將merge_HOO的結構merge_HOO為一個字典,該字典的鍵包含您列的數據。 由於我想您最終將擁有多個餐廳,因此我在my_list為每個餐廳添加了一個計數器item

my_list = [{'open': [{'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 0},
                     {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 1},
                     {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 2},
                     {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 3},
                     {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 4},
                     {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 5},
                     {'is_overnight': False, 'start': '1100', 'end': '2100', 'day': 6}], 'hours_type': 'REGULAR',
            'is_open_now': False}]

merge_HOO = {'item': [], 'day': [], 'start': [], 'end': []}
for i, restaurant in enumerate(my_list):
    for item in restaurant['open']:
        merge_HOO['item'].append(i)
        merge_HOO['day'].append(item['day'])
        merge_HOO['start'].append(item['start'])
        merge_HOO['end'].append(item['end'])

merge_HOO = pd.DataFrame(merge_HOO,
                         columns=['item', 'day', 'start', 'end'])
print(merge_HOO)

它會產生

   item  day start   end
0     0    0  1100  2200
1     0    1  1100  2200
2     0    2  1100  2200
3     0    3  1100  2200
4     0    4  1100  2200
5     0    5  1100  2200
6     0    6  1100  2100

那是你想要的嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM