【问题标题】:Mapping and transforming CSV with Pandas使用 Pandas 映射和转换 CSV
【发布时间】: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

标签: python pandas csv dataset


【解决方案1】:

我不确定我是否理解您的需求,但我会尽力做到最好。

#you can loop over your companies like so:
for company in data['Company ID']:
   # Do whatever, for example test if Total > 0 
   if data["Total"][data['Company ID'] == company] > 0:
      # do something

如果你想添加列,你可以

# create a list like so 
my_list = []
# after appending what you want you build a new column like so
data["somename"] = my_list

如果不确切了解您的问题,我无法为您提供更多帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2021-12-28
    • 2018-11-06
    • 2022-01-26
    相关资源
    最近更新 更多