根据列标题添加新行

时间:2018-05-28 13:19:24

标签: python pandas

columns= ['A','B','C']
df= pd.DataFrame(columns=columns)

我有一个像上面一样的空数据框,带有命名列标题,我有文件,其中每个文件都有A 32,B 43,C 21等数据。我希望以这样的方式填充数据框:每个文件占用一行,并在相应列标题中的每个文件中添加数据。

例如 -

让两个文件像 -

file1    file2

A 32     A 56
B 31     B 34
C 45     C 12

然后数据框将是

  'A'    'B'  'C'
  32     31    45
  56     34    12

编辑 -

for root, dirs, files in os.walk(dir_M):
    for name in files:

        L = [pd.read_csv(f, index_col=[0], header=None, sep='\s+')[1] for f in files]
        df = pd.concat(L, axis=1).T

1 个答案:

答案 0 :(得分:2)

list of DataFrame concat使用列表理解并转置:

#add /*.* for read all files
currentdir = 'path/*.*'

L = []
#loop by files
for file in glob.glob(currentdir):
    print (file)

    s = pd.read_csv(file, sep='|', header=None)[0]
    if (s.astype(str).str.strip().str.contains('\s+').any()):
        #print (s)
        df = s.str.rsplit(n=1, expand=True)
        df.columns = ['a','b']
        L.append(df.set_index('a')['b'])


df = pd.concat(L, axis=1, keys=range(len(L))).T