我正在尝试将两个csv文件(items.csv和prices.csv)组合在一起以创建combined_list.txt。结果(combined_list.txt)应该是按字母顺序排列的列表,格式为:item(quantity):$ total_price_for_item并包含2个额外的行:一个包含10个等号的分隔符行和一个包含列表总金额的行:
bread (10.0): $3.0
cheese (0.4): $4.0
eggs (11.0): $2.2
ham (0.6): $9.0
milk (2.0): $6.5
peanut butter (4.0): $12.0
tuna (4.0):$8.0
====================
Total: $44.7
items.csv看起来像
eggs,6
milk,1
cheese,0.250
ham,0.250
etc...
和prices.txt看起来像
eggs,$0.2
milk,$3.25
etc...
我必须使用python执行一个版本,使用pandas执行另一个版本,但我在网上找到的任何内容都无法通过我可以使用的方式进行标记。我从
开始import csv
with open('items.csv', 'r') as inputFile:
new_file = csv.reader(inputFile, delimiter=' ', quotechar='|')
for row in new_file:
print .join(row)
但我无法将所有东西放在一起。我发现的一些解决方案对我来说有点过于复杂,或者无法处理我的文件,这些文件没有列标题。我仍然想弄明白,但我知道对于你们中的一些人来说,这非常容易,所以我转向集体智慧,而不是单独靠在墙上。
答案 0 :(得分:0)
Pandas有一个用于读取csv文件的内置方法。以下是将两组数据合并为一个数据帧的代码:
import pandas as pd
items = pd.read_csv('items.csv', index_col=0)
items.columns = columns=['Item', 'QTY']
prices = pd.read_csv('prices.csv', index_col=0)
prices.columns = ['Item', 'Price']
df = items.combine_first(prices)
要对重复项进行排序和删除:
df = df.sort()
df.drop_duplicates('Item', inplace=True)
df = df.to_csv('combined.txt')