Python 处理我收集的数据。如何获取csv';s在熊猫数据帧上排列

Python 处理我收集的数据。如何获取csv';s在熊猫数据帧上排列,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我有两个csv,其中有两列:项目和价格。有些csv的行数不同,有些完全匹配。然后如何组合csv,使价格与正确的索引名称(项目)匹配,其中每个csv的价格进入其自己的列(作为csv的日期),如果该项目不在索引中,它将被连接? 我手动添加了文件创建日期作为每个csv的另一列,因为我在生成第一批时没有考虑到这一点,但我不确定这是否真的有用,因为我可以将标签名称设置为日期 我是这样想的: Item csv/date1 csv/date2 csv

我有两个csv,其中有两列:项目和价格。有些csv的行数不同,有些完全匹配。然后如何组合csv,使价格与正确的索引名称(项目)匹配,其中每个csv的价格进入其自己的列(作为csv的日期),如果该项目不在索引中,它将被连接? 我手动添加了文件创建日期作为每个csv的另一列,因为我在生成第一批时没有考虑到这一点,但我不确定这是否真的有用,因为我可以将标签名称设置为日期

我是这样想的:

    Item                      csv/date1  csv/date2     csv/date...
    Topper Blue Glitter1 ea    2.50        2.75         2.55
    Topper Pink Glitter1 ea    2.50        2.75         2.55
    Bamboo Needles 35MM1 ea    2.75        2.75         2.99
    6MM Knitting Needles ea                3.50
    8MM Bamboo Needles   ea                             3.79
编辑

concat的输出:

                                        0         Date        Price
    Item            
    DoleSunflower Bacon Crunch Cho..    NaN      2020-03-16   $4.98
    Apple Slices280 g                   NaN      2020-03-16   $4.00
    PC OrganicsCooking Onions907 g      NaN      2020-03-16   $2.98
    Limes1 ea                           NaN      2020-03-16   $0.68
    Granny Smith Apples                 NaN      2020-03-16   $1.09
    ... ... ... ...
    Greenhouse Peppers, Yellow       2020-03-17   NaN          NaN
    Lettuce Iceberg1 ea              2020-03-17   NaN          NaN
    Farmer's MarketSweet Baby        2020-03-17   NaN          NaN
    Kohlrabi                         2020-03-17   NaN          NaN
    Farmer's MarketFM English Cucu   2020-03-17   NaN          NaN 
合并输出:

                                Price_x  Date_x     Price_y    Date_y
    Item                
    DoleSunflower Bacon C       $4.98   2020-03-16  NaN NaN
    Apple Slices280 g           $4.00   2020-03-16  NaN NaN
    PC OrganicsCooking On       $2.98   2020-03-16  NaN NaN
    Limes1 ea                   $0.68   2020-03-16  $0.68   2020-03-17
    Limes1 ea                   $0.68   2020-03-16  $0.68   2020-03-17
最后用concat得到了预期的结果。下面的建议简化了迭代:

                                    03-16-2020  03-17-2020  03-20-2020
    Item            
    DoleSunflower Bacon Crunch      $4.98       NaN          NaN
    Apple Slices280 g               $4.00       NaN          NaN
    PC OrganicsCooking Onio         $2.98       NaN          NaN
    Limes1 ea                       $0.68       NaN          NaN
    Granny Smith Apple              $1.09       NaN          NaN
    ... ... ... ...
    Green Cabbage                   NaN         NaN          $2.52
    Celery Stalks1 ea               NaN         NaN          $1.9

将每个CSV读入不同的数据框,将
项目
设置为索引,将
价格
列重命名为
创建日期
,最后连接所有CSV,这是一个预先定义CSV名称的示例,可能需要进行一些调整:

 csv_files = ['file1.csv', 'file2.csv', 'file3.csv']

 dfs = [pd.read_csv(x) for x in csv_files]

 for df in dfs:
      df.Date = pd.to_datetime(df.Date)
      df.set_index('Item', inplace=True)
      date = df.Date.max().strftime('%Y_%m_%d')
      df.rename({'Price': date}, inplace=True)

 df_final = pd.concat(dfs)

使用
read\u csv
创建数据帧后,
在项目列上设置索引
,然后应执行
concat
合并

pd.concat([df1, df2], axis=1, join='outer')

df1.merge(df2, how='outer', left_index=True, right_index=True)
避免外部联接除非确实需要,否则仅当您要填充所有记录时才使用它,否则使用内部联接。 如果你喜欢的话,你也可以做一个左连接或右连接。 在这里阅读更多:和


如果不查看数据,很难说得更多。

嘿,你能发布一个CSV的样子吗?你能更具体地说明问题是什么吗?请参阅,.AMC,如果索引已经存在,我不知道如何让csv在不同列的行上排列,如果索引不存在,则只将其索引(即项目)放在底部或项目列上的任何位置。我尝试了此操作,但在设置日期变量时出错。显然,该文件不存在。这是有道理的,因为我不知道变量是如何命名的。抱歉,不知道如何格式化此。。。但是我得到了日期的错误…--->2 df.Date=pd.to_datetime(df.Date)AttributeError:'generator'对象没有属性'Date'您的一个CSV文件没有
Date
列读取CSV时,它没有包含确保
dfs
是一个数据帧列表,其中每个元素都是CSV文件的数据帧,三是查看其中一个是否缺少
Date
data\u columns=['Date'在df.columns中表示dfs中的df.columns]
data\u columns
应该只包含
True
值。我发现concat部分有错误。起初我认为这是因为行不均匀,但我手工编辑了实际的csv,结果还是一样。与将轴设置为列[?]有关的内容,因为它在设置为0后消失。不管怎样,我尝试了一些我在编辑中包含的东西,这些东西很有效,现在我必须弄清楚如何在那里获得价格。