Python中有没有一种方法可以将名称与值相乘? CSV

时间:2020-05-14 10:44:30

标签: python-3.x pandas

我有一个包含名称和数字的csv文件。我希望该名称乘以值并存储在字典中。如果没有值,则应跳过名称。

Nicole  15,
Heike   20,
Markus  32,
Carmen  23,
Holger   ,
Carolin  ,
Marcin  16,
Vero    12,
Sabine  16,
Peter   32,
Nicole   ,
Markus S    15,

例如看起来像这样

´´´people = {"sachbearbeiter" : ["Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Nicole", "Heike", "Heike", "Heike", "Heike", "Heike", "Heike", and so on]}´´´

这样我就可以加载此系列并将其附加到我的数据框中。因为我有一份要交给我的员工的案件清单。

谢谢

2 个答案:

答案 0 :(得分:0)

为什么不使用循环?

l=[("Nicole",3),("Bob",2)]

r=[]

for i in l:
   for j in range(0,i[1]):
      r.append(i[0])

print(r)

甚至是乘法

l=[("Nicole",3),("Bob",2),("Chloe",0)]

r=[]

for i in l:
    if (i[1]!=0):
        r=r+i[1]*[i[0]]



print(r)

答案 1 :(得分:0)

这应该适合您的示例。如果您有一个数字但没有值,或者没有值并且没有数字,则必须编写一些代码来处理它。 (假设csv称为sachbearbeiter.csv)。

import csv

def csv2list(source_name):
    with open(source_name, encoding='utf-8') as csvfile:
        read_csv = csv.reader(csvfile, delimiter=',')
        return list(read_csv)

people = {"sachbearbeiter": []}

for line in csv2list("sachbearbeiter.csv"):
    t = line[0].rsplit(None, 1)
    if t[-1].isdigit():
        people["sachbearbeiter"].extend(int(t[1])*[t[0]])