以将数据导出为 CSV 文件的方式对数据进行分组

Grouping data in a manner to export them as a CSV file

我有一个乱七八糟的数据,看起来像

10 130 31 11 106 27 12 105 31 14 100 24 15 60 24 16 70 25 17 65 18 18 60 23 20 48 21 22 28 14 24 12 18 25 2 14 26 1 10 30 0 9

我想按照它们看起来的方式对它们进行分组

10, 130, 31    
11, 106, 27   
12, 105, 31  
14, 100, 24  
15, 60, 24  
16, 70, 25  
...

我尝试 mystr.split() 以列表结束,然后定义以下函数将它们分组为 3:

def dataframing(df):
    nd = ["["]
    a = 0
    for data in df:
        if a < 3:
            nd += str(data)
            a = a+1
        else:
            nd+= str("],[")
            a = 0
    nd  += str("]")
            
    return nd

我很确定这会起作用,但是,我得到了以下输出:

['[',
 '1',
 '0',
 '1',
 '3',
 '0',
 '3',
 '1',
 ']',
 ',',
 '[',
 '1',
 '0',
 '6',
 '2',
 '7',
 '1',
 '2',
 ']',
 ',',
 '[',
 '3',
 '1',
 '1',
 '4',
 '1',
 '0',
 '0',
 ']',
 ',',
 '[',
 '1',
 '5',
 '6',
 '0',
 '2',
 '4',
 ']',
 ',',
 '[',
 '7',
 '0',
 '2',
 '5',
 '1',
 '7',
 ']',
 ',',
 '[',
 '1',
 '8',
 '1',
 '8',
 '6',
 '0',
 ']',
 ',',
 '[',
 '2',
 '0',
 '4',
 '8',
 '2',
 '1',
 ']',
 ',',
 '[',
 '2',
 '8',
 '1',
 '4',
 '2',
 '4',
 ']',
 ',',
 '[',
 '1',
 '8',
 '2',
 '5',
 '2',
 ']',
 ',',
 '[',
 '2',
 '6',
 '1',
 '1',
 '0',
 ']',
 ',',
 '[',
 '0',
 '9',
 ']']

我不知道为什么,但我想我的代码将每个数字都作为单独的数据,而不是将它们作为数字的一部分接受。现在我不能再前进了,任何替代解决方案将不胜感激。

尝试列表推导法。也永远不要使用 list1 += list2。如果需要,欧洲工商管理学院使用 list.extend()

l = "10 130 31 11 106 27 12 105 31 14 100 24 15 60 24 16 70 25 17 65 18 18 60 23 20 48 21 22 28 14 24 12 18 25 2 14 26 1 10 30 0 9"
l = l.split(" ")
l = [int(i) for i in l]

l = [10,130,31,11,106,27,12,105,31,14,100,24,15,60,24,16,70,25,17,65,18,18,60,23,20,48,21,22,28,14,24,12,18,25,2,14,26,1,10,30,0,9]

grouped = [l[i: i+4] for i in range(0,len(l), 4)]
# use 4 if you want to group in 4 or 3 if u want to group in 3
# for example to group in 3 use
# grouped = [l[i: i+3] for i in range(0,len(l), 3)]

输出

[[10, 130, 31, 11],
 [106, 27, 12, 105],
 [31, 14, 100, 24],
 [15, 60, 24, 16],
 [70, 25, 17, 65],
 [18, 18, 60, 23],
 [20, 48, 21, 22],
 [28, 14, 24, 12],
 [18, 25, 2, 14],
 [26, 1, 10, 30],
 [0, 9]]

假设输入是问题中出现的 space 分隔字符串,则无需使用 pandas、

data = "10 130 31 11 106 27 12 105 31 14 100 24 15 60 24 16 70 25 17 65 18 18 60 23 20 48 21 22 28 14 24 12 18 25 2 14 26 1 10 30 0 9"

# Split the string into an array
data_array = data.split()

print(data_array)


# Chunking function, ref: 
def chunks(array, n):
    return [array[i:i+n] for i in range(0, len(array), n)]


print(chunks(data_array, 3))

输出,

[['10', '130', '31'], 
 ['11', '106', '27'], 
 ['12', '105', '31'], 
 ['14', '100', '24'], 
 ['15', '60', '24'],
 ['16', '70', '25'], 
 ['17', '65', '18'], 
 ['18', '60', '23'], 
 ['20', '48', '21'], 
 ['22', '28', '14'], 
 ['24', '12', '18'],
 ['25', '2', '14'], 
 ['26', '1', '10'], 
 ['30', '0', '9']]