将多个数据帧写入单个文本文件而不使用任何分隔符

时间:2018-02-07 18:27:10

标签: python pandas dataframe text export

我有5个不同的数据框,我希望一个接一个地输出到单个文本文件。

由于我的具体目的,我不想要分隔符。

最快的方法是什么?

实施例: 以下是5个数据帧。空格表示新列。

 1st df   AAA 1 2 3 4 5 6
 2nd      BBB 1 2 3 4 5 6 7 8 9 10 
 3rd      CCC 1 2 3 4 5 6 6 7 12 2 3 3 4 51  2 
          CCC 1 2 3 4 5 6 6 7 12 2 3 3 4 51  2 
 4th      DDD 1 2 3 4 5 6 2 3 4 5 
 5th      EEE 1 2 3 4 5 6 7 8 9 10 1 2 2 

我想在单个文本文件中将上述内容转换为下面的内容:

AAA123456
BBB12345678910 
CCC12345667122334512 
CCC12345667122334512 
DDD1234562345 
EEE12345678910122 

请注意,刚刚删除了列,但使用新行保留了行。

我试过谷歌搜索,但to_csv似乎需要一个分隔符,我也遇到了一些解决方案使用" open"和"写"但这似乎需要遍历数据框中的每一行。

欣赏任何想法!

谢谢,

2 个答案:

答案 0 :(得分:0)

您可以将数据框与pd.concat合并。

import pandas as pd

df1 = pd.DataFrame({'AAA': [1, 2, 3, 4, 5, 6]}).T
df2 = pd.DataFrame({'BBB': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}).T
df_all = pd.concat([df1, df2])

输出(您可以根据需要进行格式化):

    0   1   2   3   4   5   6   7   8   9
AAA     1   2   3   4   5   6   NaN     NaN     NaN     NaN
BBB     1   2   3   4   5   6   7.0     8.0     9.0     10.0

写入CSV [编辑:使用广告素材分隔符]:

df_all.to_csv('df_all.csv', sep = ',')

导入CSV并删除空格:

with open('df_all.csv', mode = 'r') as file_in:
    with open('df_all_no_spaces.txt', mode = 'w') as file_out:
        text = file_in.read()
        text = text.replace(',', '')
        file_out.write(text)

最后一点必须采用更优雅的方式,但这样做有效。也许有充分的理由,大熊猫不支持导出到没有分隔符的CSV。

编辑:您可以使用逗号写入CSV,然后将其删除。 :)

答案 1 :(得分:0)

要在单个文本文件中收集一些数据框,请执行以下操作:

whole_curpos = ''
#read every dataframe
for df in dataframe_list:
  #gather all the column in a single column
  df['whole_text'] = df[col0].astype(str)+df[col1]+...+df[coln]
  for row in range(df.shape[0]):
    whole_curpos = whole_curpos + df['whole_text'].iloc[row]
  whole_curpos = whole_curpos + '\n'