如何将多个列合并到一个单元格中? 如何将包含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...
行数不会改变。但是,当从日志文件中提取数据时,列数是一个变量。最后,我只需要每行只有一列。
我只是一个有熊猫的新人。这是我计算列数然后将其合并到一个单元格的方式吗?
非常感谢您的帮助。
答案 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()