Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫-将数据附加到特定列_Python_Pandas - Fatal编程技术网

Python 熊猫-将数据附加到特定列

Python 熊猫-将数据附加到特定列,python,pandas,Python,Pandas,我需要将列表中的数据附加到特定列。 我有四份清单: orderNumber = ['123456789'] countryOfOrigin = ['United Kingdom'] sizeList = ['2', '4'] quantityList = ['10', '12'] 我还有一个带有以下标题的CSV文件: OrderNumber COO Size QTY 我需要将这些列表添加到CSV的正确列中。如果列表中只有一个数据项,则只需将其应用于填充所有行 OrderNumbe

我需要将列表中的数据附加到特定列。 我有四份清单:

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)

知道如何解决这个问题吗?

如果可能,使用一个元素只列出标量,创建标量/列表字典并传递给数据帧构造函数-所有列表必须具有相同的长度:

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

如果可能,使用一个元素只列出标量,创建标量/列表字典并传递给数据帧构造函数-所有列表必须具有相同的长度:

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

非常感谢你!这正是我要找的输入总是列表。这是一个更大程序的一部分,该程序从用户那里获取大约10个输入,并将它们全部存储在列表中。其中8个列表中只有一个项目,其余两个列表中有多个项目,但数量始终相同。因此,我需要某种方法将单数项列表向下复制,复制的行数是其他两个列表创建的行数的两倍。你能告诉我为什么我要使用“预处理”吗?@babis95-刚刚编辑的答案对于更一般的解决方案,字典是由输入列表生成的。请检查一下。谢谢你的帮助。这两种解决方案都非常有效。我不确定我在看第二个选项,特别是d={a:b[0],如果lenb==1,那么在zipheader,vals}这一行中a,b的其他b。你能简单解释一下吗?@babis95-当然,它可以将一个元素列表转换成标量。所以['123456789']改为'123456789'。给出列表并测试长度是否为1,然后选择返回的第一个值“123456789”,否则不要触摸-如果长度更像1,则返回相同的值-因此对于['10','12']返回['10','12'],非常感谢!这正是我要找的输入总是列表。这是一个更大程序的一部分,该程序从用户那里获取大约10个输入,并将它们全部存储在列表中。其中8个列表中只有一个项目,其余两个列表中有多个项目,但数量始终相同。因此,我需要某种方法将单数项列表向下复制,复制的行数是其他两个列表创建的行数的两倍。你能告诉我为什么我要使用“预处理”吗?@babis95-刚刚编辑的答案对于更一般的解决方案,字典是由输入列表生成的。请检查一下。谢谢你的帮助。这两种解决方案都非常有效。我不确定我在看第二个选项,特别是d={a:b[0],如果lenb==1,那么在zipheader,vals}这一行中a,b的其他b。你能简单解释一下吗?@babis95-当然,它可以将一个元素列表转换成标量。所以['123456789']改为'123456789'。给出列表并测试长度是否为1,然后选择返回的第一个值“123456789”,否则不接触-如果长度更像1,则返回相同的值-因此对于['10','12']返回['10','12']