Python добавляет новый столбец из другого csv

#python #pandas #csv #append

#python #pandas #csv #добавить

Вопрос:

Я каждый день генерирую csv (перезаписанный) с этими двумя столбцами (без заголовков). Первый — номер клиента, а второй — ежедневные продажи

 963840      3
18065729    2
255657800   4
338082549   183
364915832   2
392633366   14
450647013   3
  

Мне нужно добавлять в новый csv-файл ежедневные продажи, каждый день в новый столбец, чтобы узнать эволюцию

 963840      3       5     6    20
18065729    2       4     7     8   
255657800   4       7
338082549   183     220
364915832   2       5
392633366   14      14
450647013   3       4
  

заранее спасибо

Ответ №1:

Возможно, внешнее соединение работает лучше, если у вас разные клиенты в разные дни.

 import pandas as pd
day1 = pd.DataFrame({'id': ['963840', '18065729', '255657800', '338082549','364915832','392633366','450647013'],
                    'day1data': [3,2,4,183,2,14,3]})
day2 = pd.DataFrame({'id': ['963840', '18065729', '255657800', '338082549','364915832','392633366','450647013'],
                    'day2data': [5,4,7,220,5,14,4]})

print(day1.merge(day2, on='id', how='outer'))
  

Ant результат будет таким, как показано ниже:

           id  day1data  day2data
0     963840         3         5
1   18065729         2         4
2  255657800         4         7
3  338082549       183       220
4  364915832         2         5
5  392633366        14        14
6  450647013         3         4

  

Также, если вы хотите сохранить как csv, вы можете использовать метод to_csv() .

 day1.merge(day2, on='id', how='outer').to_csv('merged_data.csv',sep=';')
  

Комментарии:

1. ДА. Вы можете использовать команду pandas.read_csv() для извлечения данных из csv и команду to_csv для сохранения в формате csv.

2. спасибо, как я мог бы получать данные из одного csv (source.csv) и каждый день записывать один новый столбец в Report.csv? только добавит второй столбец, и у этого столбца нет заголовка

Ответ №2:

Я попытался написать его символическим, чтобы вы могли следовать коду, загружать свои CSV-файлы и объединять их:

 basedf = pd.read_csv('firstday.csv')

days = ['day2.csv','day3.csv','day4.csv','day5.csv']
for day in days:
    df = pd.read_csv(day)
    basedf = basedf.merge(df,on='clientid',how='left')
  

Комментарии:

1. Спасибо, исходный csv-файл всегда один и тот же, я перезаписываю данные на нем. я имею в виду создать задачу для автоматизации этого

2. Таким образом, вы можете загружать этот файл каждый раз, когда хотите внедрить в basedata

3. я генерирую исходный csv с помощью другого скрипта, выполняющего выбор в БД