[英]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.