Как преобразовать этот файл с помощью панд? - PullRequest
0 голосов
/ 24 ноября 2018

Здравствуйте, у меня есть этот файл:

a|b|c|d|
1.05 january february 05-02-2010 Linux Mint
3.458 november december 05-02-2010 Windows 10

И я хотел бы использовать панд с Python, чтобы преобразовать этот файл в CSV следующим образом:

a;b;c;d
1.05;january february;05-02-2010;Linux Mint
3.458;november december;05-02-2010;Windows 10

У меня нет никакой идеи сделатьэто ... не могли бы вы помочь мне, пожалуйста?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Мне не ясно, имеете ли вы в виду преобразование в памяти или запись обратно в файл.

Если это последнее, возможно, вы ищете

df.to_csv(out_df='filename', sep=';')

  • в сочетании с некоторыми манипуляциями с метками столбцов, как упомянуто в другом ответе
0 голосов
/ 24 ноября 2018

Вы можете сделать это:

In [212]: df = pd.read_csv('ff.txt', skiprows=1, header=None, sep=' ')
In [211]: df
Out[211]: 
       0         1         2           3        4     5
0  1.050   january  february  05-02-2010    Linux  Mint
1  3.458  november  december  05-02-2010  Windows    10

In [232]: df['months'] = df[1].map(str) +' '+ df[2]

In [233]: df['end_cols'] = df[4].map(str) +' '+ df[5]

In [237]: df.drop([1,2,4,5], axis=1, inplace=True)

In [238]: df = df[[0,'months',3,'end_cols']]

In [239]: df
Out[239]: 
       0             months           3    end_cols
0  1.050   january february  05-02-2010  Linux Mint
1  3.458  november december  05-02-2010  Windows 10

#Now, extract header from original file
In [216]: with open('ff.txt', 'r') as f:
     ...:     header = f.readline()

In [217]: header
Out[217]: 'a|b|c|d\n'

In [245]: df.columns = header.strip().split('|')

# write the data to the file with delimiter =';'
In [224]: df.to_csv('abc.csv', sep=';', index=False)

#Final Output

mayankp@mayank:~/$ cat abc.csv 
a;b;c;d
1.05;january february;05-02-2010;Linux Mint
3.458;november december;05-02-2010;Windows 10
...