【问题标题】:Concatenate on csv files and adding new row连接 csv 文件并添加新行
【发布时间】:2017-08-21 23:08:49
【问题描述】:

当我尝试连接我的 csv 文件时,每个 csv 文件的最后两列放置在同一列中。如何解决这个问题?

第二个问题,我想在每个文件中添加新行作为输出。

这是我的代码和示例;

import glob
import pandas as pd
import os

path = r'/Users/isozyesil/PycharmProjects/P300/Data/TestP300'  # use your path

allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list_ = []
for file_ in allFiles:
    df = pd.read_csv(file_, index_col=None, header=0)
    list_.append(df)



frame = pd.concat(list_)
print(list_)

这是我的问题的示例;

Last 6 row of A.csv : 

4  -1.6144  -0.7137  1.2791  -0.8205
5  -2.4333  -0.9433  0.9616  -2.3392
6  -2.3548   0.0945  0.9933  -3.1174
7  -3.0944  -0.8559  0.6441  -2.8976
8  -0.4791  -0.8795  0.7027  -2.7338 
9  -3.6540  -6.2700  0.2650  -4.0410

Last First 4 row of B.csv :  
0  -3.1024  -1.8710  0.1311  -5.7071
1  -0.1855  -0.8241 -0.2756  -6.6962
2  -3.2941  -2.0557  0.2471  -4.4969
3  -1.5004  -0.2482  0.9565  -0.6866


Here is what happens when I run my code : 

4  -1.6144  -0.7137  1.2791  -0.8205
5  -2.4333  -0.9433  0.9616  -2.3392
6  -2.3548   0.0945  0.9933  -3.1174
7  -3.0944  -0.8559  0.6441  -2.8976
8  -0.4791  -0.8795  0.7027  -2.7338,  -3.6540  -6.2700  0.2650 -4.0410,
0  -3.1024  -1.8710  0.1311  -5.7071
1  -0.1855  -0.8241 -0.2756  -6.6962
2  -3.2941  -2.0557  0.2471  -4.4969
3  -1.5004  -0.2482  0.9565  -0.6866

Here is what I dream to do

4  -1.6144  -0.7137  1.2791  -0.8205  A
5  -2.4333  -0.9433  0.9616  -2.3392  A
6  -2.3548   0.0945  0.9933  -3.1174  A
7  -3.0944  -0.8559  0.6441  -2.8976  A
8  -0.4791  -0.8795  0.7027  -2.7338  A
9  -3.6540  -6.2700  0.2650  -4.0410  A
0  -3.1024  -1.8710  0.1311  -5.7071  B
1  -0.1855  -0.8241 -0.2756  -6.6962  B
2  -3.2941  -2.0557  0.2471  -4.4969  B
3  -1.5004  -0.2482  0.9565  -0.6866  B

在此先感谢每一位蟒蛇战士。

【问题讨论】:

  • print(frame) 的输出是什么?
  • -0.0084 -0.0266 -0.1331 -0.2933 -0.3348 -0.8568 -0.8621 -0.9148 \ 0 NaN NaN NaN NaN NaN NaN NaN -2.4155 1 NaN NaN NaN NaN NaN NaN NaN -0.2417 2 NaN NaN NaN NaN NaN NaN -2.3314 3 NaN NaN NaN NaN NaN NaN NaN -2.3340 4 NaN NaN NaN NaN NaN NaN NaN -1.6144 [72 行 x 32 列]
  • 考虑有一堆 Nan @MaxU
  • 为什么A.csv第8行和第9行后面有逗号?我问是因为在 python 中,逗号可以在打印末尾使用,以避免在行尾换行。当然,您不是在调用 print ,但行尾的逗号可能对您的库有意义。
  • 其实没有逗号,我把输出的结果复制过来作为捷径。我刚刚检查了每个文件,数字之间只有逗号,而不是行尾。我正在编辑它。

标签: python csv machine-learning


【解决方案1】:
import os
import glob
import pandas as pd

files = glob.glob(r'D:\temp\.data\43076965\*.csv')

x = pd.concat(
    [pd.read_csv(f, header=None, delim_whitespace=True)
       .assign(f=os.path.basename(os.path.splitext(f)[0]))
     for f in files],
    ignore_index=True
)

x.to_csv(r'd:/temp/out.csv', header=None, index=False, sep='\t')

结果(d:/temp/out.csv):

4   -1.6144 -0.7137 1.2791  -0.8205 A
5   -2.4333 -0.9433 0.9616  -2.3392 A
6   -2.3548 0.0945  0.9933  -3.1174 A
7   -3.0944 -0.8559 0.6441  -2.8976 A
8   -0.4791 -0.8795 0.7027  -2.7338 A
9   -3.654  -6.27   0.265   -4.041  A
0   -3.1024 -1.871  0.1311  -5.7071 B
1   -0.1855 -0.8241 -0.2756 -6.6962 B
2   -3.2941 -2.0557 0.2471  -4.4969 B
3   -1.5004 -0.2482 0.9565  -0.6866 B

【讨论】:

  • 杜哲 dyakuyu) @MaxU 或者谢谢)
  • @IbrahimSefaOzyesil, yardımcı olduğuma sevindim(谷歌翻译);-)
  • neeet eta ne 翻译)),我说俄语是为了在斯拉夫国家拯救自己,并在乌克兰学习了有关乌克兰语的基本词汇。 :) @MaxU
  • Privet )我还有一个问题,该行中的每个输出看起来像这样"1.0164,""1.5813"",""0.9508"",""-3.4515""";TrainAP300 。我想将它们分别写到不同的行,如下所示; 1.0164 1.5813 0.9508 -3.4515 TrainAP300 我也想在 matlab api 中训练我的数据。在那种情况下,Matlab 对我的 csv 格式很生气)
猜你喜欢
  • 2012-07-09
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
相关资源
最近更新 更多