![](/img/trans.png)
[英]write lists to pandas dataframe to csv, read dataframe from csv and convert to lists again without having strings
[英]read/write dictionary of strings, integers, and lists of strings from/to csv file
我试过搜索这个问题,但只能单独找到字符串、整数或列表,当我尝试组合它们时,这些解决方案似乎会发生冲突。
我正在编写一个程序,为用户分配家务,考虑到:用户可用性、他们一天可以做的数量、他们不能做的任何家务、他们分配的最后一个家务以及前一周的作业。 我仍在研究数据结构,但到目前为止,似乎使用多个 csv 文件、列表和字典是 go 的方法。 我考虑过使用类,但我不确定如何使用 go。
我正在使用 csv 和 pandas 模块的组合来读取/写入文件。 我发现 csv 模块(在大多数情况下)以我想要的格式写入文件,并且 pandas 模块(在大多数情况下)以我想要的方式读取文件。
这是我的名为 users.csv 的 csv 文件(最终 LastChore 列将由单个家务或家务列表填充,或者我可能只是删除它并使用不同的字典):
用户 | 可用的 | DayMax | 严格 | 最后的家务 |
---|---|---|---|---|
杰尔 | [“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”] | 1 | 没有任何 | 没有任何 |
鲍勃 | ['周二','周三','周五','周六','周日'] | 1 | 垃圾 | 没有任何 |
萨拉 | ['星期三','星期四','星期五'] | 1 | 没有任何 | 没有任何 |
凯利 | [“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”] | 2 | 真空 | 没有任何 |
这是字典的结果列表:
[{'User': 'Jer', 'Available': "['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']", 'DayMax': 1, 'Restrict': 'None', 'LastChore': 'None'}, {'User': 'Bob', 'Available': "['Tue', 'Wed', 'Fri', 'Sat', 'Sun']", 'DayMax': 1, 'Restrict': 'garbage', 'LastChore': 'None'}, {'User': 'Sara', 'Available': "['Wed', 'Thu ', 'Fri']", 'DayMax': 1, 'Restrict': 'None', 'LastChore': 'None'}, {'User': 'Kelly', 'Available': "['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']", 'DayMax': 2, 'Restrict': 'vacuum', 'LastChore': 'None'}]
如您所见,我的列表用“”括起来。
更新:
我通过在 to_csv 行中添加“index=False”解决了以下问题。
dataframe.to_csv('users.csv',index=False)
我会将 rest 留在这里,以供其他遇到此问题的人使用。 我仍然对我的字典中的列表有问题,但它们周围有“”。
最重要的是,在运行该程序后,它会在每次运行它时不断向我的文件中添加列。
这是 csv 文件运行 4 次后的结果:
未命名:0.2 | 未命名:0.1 | 未命名:0 | 用户 | ... | |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 杰尔 | ... |
1 | 1 | 1 | 1 | 鲍勃 | ... |
2 | 2 | 2 | 2 | 萨拉 | ... |
3 | 3 | 3 | 3 | 凯利 | ... |
以及由此产生的字典:
[{'未命名:0.2':0,'未命名:0.1':0,'未命名:0':0,'用户':'Jer',...
这是我的代码:
import csv
import pandas
#Loading user data from files and creating dictionaries.
def loadUsers():
try:
dataframe = pandas.read_csv('users.csv')
userList = dataframe.to_dict('records')
dataframe.to_csv('users.csv')
except FileNotFoundError:
print("Users database missing. Creating file")
makeFile("users.csv")
except Exception as e:
print("Problem with files")
return userList
注意:我一直在使用 loadUsers function 并在 excel 中编辑 csv。 Currently I have a makeFile function that creates the csv file with the header row only using csv module, I have yet to write the (newer) code that writes all this information to the csv file. 最初我使用的是文本文件,现在将代码切换到 csv 文件。
我最终通过在每个以字符串形式出现的列表上使用 ast.literal_eval() 来解决我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.