【发布时间】:2020-01-27 03:18:55
【问题描述】:
我一直在尝试使用 Python 和 Pandas 解决简单的映射和转换问题,但似乎我没有朝着正确的方向前进。
我有一个简单的 CSV 文件,我需要删除一些列、插入新列并将一些数据注入这些新列。
我可以将它添加到字典中,但我不知道迭代数据以将数组的每个元素放入一行,而不是与字典内的键关联的整个列表。
我能够找到关于 pandas 的教程,但没有一个关于删除/添加列/新数据的内容。
我相信阅读代码比试图描述它更容易理解:
import numpy as np
import pandas as pd
# open file
data = pd.read_csv("sample_data.csv")
# delete columns
data = data.drop(['Current Status',
'Acquisition Channel',
'Attribution',
'Contact Record ID'],
axis='columns')
# rename Unit Price column to Total
data = data.rename(columns={'Unit Price': 'Total'})
# resort
data_blend = {'CODE': ['1'],
'Company': data['Company ID'],
'DEPARTMENT': np.nan,
'CLASS': np.nan,
'SALES': data['Total']>0,
'RETURNS': data['Total']<0,
'UNITS': data['Quantity'],
'DATE-TRAN': data['Transaction ID'],
'TRDATE-CCCCMMDD': data['Date'],
'SKU-NEW': data['Product ID'],
'TRX-SOURCE': ['8'],
'ASSISTED-SALE': ['A'],
'RET-ORIG-DATE': data['Transaction ID'],
'RET-ORIG-TERM': data['Date'],
'TIME-HHMM00': ['AAAAAA'],
}
modified_data = pd.DataFrame.from_dict(data_blend)
感谢您对此提供的任何帮助。
【问题讨论】:
-
您的预期输出是什么?
-
代码、公司 ID、部门、类别、销售、退货、单位、日期-Tran ... 1,123,456,Class1,120,0,1,20190926 ...
-
@CeliusStingher 我采用 csv,删除一些列,将单价重命名为总计,并根据列名添加具有固定信息的新列,例如“1”或“A”或“AAAAAA”。我的 data_blend 字典正在分配整个列信息(假设为键“公司”)。我需要遍历数据并相应地附加每一行。谢谢。
-
我不明白你为什么在这里使用字典。你能举一个输出的例子吗?如果你想迭代“公司”,为什么不迭代并追加你想要的?
-
@DavidE 字典试图使用 pandas。这是我的输入和输出:输入:用户,用户 ID,当前状态,电子邮件,零售商 ID,用户登录,权限,类型,商店 ID,零售商商店 ID,位置,交易 ID,日期,产品 ID,产品名称,数量,单价, Barbara,192,Active,barba@barbara.com,132238,barbara,1,store,123,7777,New York,111122333,2019-01-31 5:00,500088000000,,1,-51,输出:代码,公司,部门,类别,销售,单位,日期-TRAN,SKU-NEW,TRX-SOURCE,辅助销售,RET-ORIG-DATE,TIME-HHMM00 1,132238,””,””,- 51,1,2019-01-31,111122333,8,A,111122333,2019-01-31,AAAAAA