Python csv将多个列合并到一个单元格

时间:2018-06-13 07:23:25

标签: python csv

如何将多个列合并到一个单元格中? 如何将包含1个X单元格(其中1是行数,X是用户未知的列数)的CSV文件转换为新的CSV文件(包括一个单个单元格以组合原始CSV文件中的所有数据)?

现在://一行,四列#####实际上,当数据从日志文件中提取时,它将是可变数量的列#############

1 A   B  C   D   

我的目的://一行,一列

1 A
  B
  C
  D

行的索引可能不总是1,因为我有许多类似的行。

有关详细信息,请参阅以下URL中的原始文件和预期的新文件 https://drive.google.com/drive/folders/1cX0o86nbLAV5Foj5avCK6E2oAvExzt5t

161.csv is the file at the present
161-final.csv is what I want...

行数不会改变。但是,当从日志文件中提取数据时,列数是一个变量。最后,我只需要每行只有一列。

我只是一个有熊猫的新人。这是我计算列数然后将其合并到一个单元格的方式吗?

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

代码:

import pandas as pd
import numpy as np
df = pd.DataFrame([['a', 'a', 'a', 'a'], ['b', 'b', 'b', 'b']])
print(df)
df1 = np.empty(df.shape[0], dtype=object)
df1[:] = df.values.tolist()

print(df1)

输出:

0  1  2  3
0  a  a  a  a
1  b  b  b  b
[list(['a', 'a', 'a', 'a']) list(['b', 'b', 'b', 'b'])]

答案 1 :(得分:0)

不确定这是您想要的,但您可以设法将一行内容放在一列pd.groupby()

import pandas as pd

df = pd.DataFrame(np.arange(4).reshape(1, 4))
df.columns = ['A', 'B', 'C', 'D']
df = df.groupby(df.index).apply(lambda x: x.values.ravel())
df = df.to_frame('unique_col') # If needed

输出:

     unique_col
0  [0, 1, 2, 3]

不确定是否可以将输出放在列表中,就像您在示例中提到的那样。

答案 2 :(得分:0)

我用一种“愚蠢”的方式来做到这一点。这是“ pd.read_table(file)”的神奇之处。

def CsvMerge(file1, file2,output):
##It is for preparation of the getFormated()
##Merge the "Format.csv" and the "text.csv.csv
  df1=pd.read_csv(file1)
###This is for merging the columns to one column
###It can also avoid an csv error
  df2=pd.read_table(file2)
  df3=pd.concat([df1,df2],axis=1)
  print(df3)
  with open(output,'w+',encoding="utf-8") as f:
      df3.to_csv(f,index=False)
  f.close()