gpt4 book ai didi

python - 更改 Pandas 中的列数

转载 作者:太空宇宙 更新时间:2023-11-04 11:08:30 24 4
gpt4 key购买 nike

我有一个 .txt 文件,其中只有一行,许多数字由可变数量的空格分隔。

32 45 2.65   -845     1 -84    97.236        454   35.78 77.12    948.87       
151 -23.5 -787.48 13.005 31

我知道每个 x 数字(每个文件中的 x 都是固定数量)应该有一个中断。例如,第一行 4 列中的前 4 个数字,第二行接下来的 4 个数字,依此类推。

+-------+---------+--------+------+| col1  |  col2   |  col3  | col4 |+-------+---------+--------+------+| 32    | 45      | 2.65   | -845 || 1     | -84     | 97.236 |  454 || 35.78 | 77.12   | 948.87 |  151 || -23.5 | -787.48 | 13.005 |   31 |+-------+---------+--------+------+

The objective is to create a .csv file with the right amount of columns.So far I have been able to separate the numbers:

import pandas as pd
data = pd.read_csv(table, sep='\s{2,}', header = None, engine='python')
export = data.to_csv(csvtable, header=False)

这将创建一个包含一行和与值一样多的列的 csv,但我希望数据位于特定数量的列中,在本例中为 4。

最佳答案

从文件中创建所有可能值的列表,然后通过 numpy.reshape reshape 4 列 DataFrame:

with open('data.txt') as f:
L = [x for line in f for x in line.strip().split()]
print (L)
['32', '45', '2.65', '-845', '1', '-84', '97.236', '454',
'35.78', '77.12', '948.87', '151', '-23.5', '-787.48', '13.005', '31']


df = pd.DataFrame(np.array(L).reshape(-1, 4))
print (df)
0 1 2 3
0 32 45 2.65 -845
1 1 -84 97.236 454
2 35.78 77.12 948.87 151
3 -23.5 -787.48 13.005 31

但是解决方案不起作用,如果不可能创建完整的 4 列,那么它有点复杂:

#missing last value
print (L)
['32', '45', '2.65', '-845', '1', '-84', '97.236', '454', '35.78',
'77.12', '948.87', '151', '-23.5', '-787.48', '13.005']

arr = np.empty(((len(L) - 1)//4 + 1)*4, dtype='O')
arr[:len(L)] = L
df = pd.DataFrame(arr.reshape((-1, 4))).fillna('0')
print(df)
0 1 2 3
0 32 45 2.65 -845
1 1 -84 97.236 454
2 35.78 77.12 948.87 151
3 -23.5 -787.48 13.005 0

关于python - 更改 Pandas 中的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58853066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com