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
答案 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