如何通过python格式化我的pandas数据框,以在csv输出中获取列?

时间:2018-06-26 14:13:16

标签: python pandas

我正在编写代码以使餐厅营业时间更长:

这是我的输入代码:

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)

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您已使std::shared_ptr的结构适应于其键包含列数据的字典。由于我想您最终将拥有多个餐厅,因此我为merge_HOO

中的每个餐厅添加了一个计数器item
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}]

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)

那是你想要的吗?