Панды - Добавить данные в определенные столбцы - PullRequest
1 голос
/ 17 октября 2019

Мне нужно добавить данные из списка в определенный столбец. У меня есть 4 списка:

orderNumber = ['123456789']
countryOfOrigin = ['United Kingdom']
sizeList = ['2', '4']
quantityList = ['10', '12']

У меня также есть файл CSV со следующими заголовками:

OrderNumber   COO   Size   QTY

Мне нужны эти списки, добавленные к этому CSV в правильных столбцах. И если список содержит только один элемент, данные просто дублируются, чтобы заполнить все строки

OrderNumber        COO         Size   QTY
123456789     United Kingdom    2     10
123456789     United Kingdom    4     20

Это то, что я пробовал. Но все, что он делает, это добавляет все одно под другое в том же столбце

orderNumber = ['123456789']
countryOfOrigin = ['United Kingdom']
sizeList = ['2', '4']
quantityList = ['10', '12']

header = ["OrderNumber", "COO", "Size", "QTY"]
order = pd.DataFrame(orderNumber)
order.to_csv('C:/Users/user/Desktop/Pandas-Example2.csv', mode='a', index=False)
size = pd.DataFrame(sizeList, columns=["Size"])
size.to_csv('C:/Users/user/Desktop/Pandas-Example2.csv', mode='a', index=False)

Есть идеи, как это можно исправить?

1 Ответ

3 голосов
/ 17 октября 2019

Если возможно, используйте вместо одного элемента списки только скаляров, создайте словарь скаляров / списков и перейдите к конструктору DataFrame - все списки должны быть одинаковой длины:

orderNumber = '123456789'
countryOfOrigin = 'United Kingdom'
sizeList = ['2', '4']
quantityList = ['10', '12']

d = {"OrderNumber": orderNumber, "COO":countryOfOrigin, "Size":sizeList, "QTY":quantityList}
order = pd.DataFrame(d)
print (order)
  OrderNumber             COO Size QTY
0   123456789  United Kingdom    2  10
1   123456789  United Kingdom    4  12

Если входные данные всегда являются спискамиВы можете использовать некоторую предварительную обработку:

orderNumber = ['123456789']
countryOfOrigin = ['United Kingdom']
sizeList = ['2', '4']
quantityList = ['10', '12']

vals = [orderNumber, countryOfOrigin, sizeList, quantityList]
header = ["OrderNumber", "COO", "Size", "QTY"]

d = {a: b[0] if len(b) == 1 else b for a, b in zip(header, vals)}
order = pd.DataFrame(d)
print (order)
  OrderNumber             COO Size QTY
0   123456789  United Kingdom    2  10
1   123456789  United Kingdom    4  12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...