Python 在pandas中动态附加数据帧
我想从列表中加载文件,计算每个文件每行的平均值、中值和标准偏差,然后创建一个数据框,列出所有新计算的字段 我有以下代码:Python 在pandas中动态附加数据帧,python,pandas,for-loop,concatenation,Python,Pandas,For Loop,Concatenation,我想从列表中加载文件,计算每个文件每行的平均值、中值和标准偏差,然后创建一个数据框,列出所有新计算的字段 我有以下代码: #list files to load file_names = ["file_1", "file_2", ...] #empty df data = pd.DataFrame() #for loop for filename in file_names: df = p
#list files to load
file_names = ["file_1", "file_2", ...]
#empty df
data = pd.DataFrame()
#for loop
for filename in file_names:
df = pd.read_csv(filename, index_col=False, header=0)
mean = df.mean(axis = 1)
median = df.median(axis = 1)
std = df.std(axis = 1)
df = pd.concat([mean, median, std], axis = 1, ignore_index = 1)
data = pd.concat(df, axis=1)
我得到一个错误:
TypeError:第一个参数必须是pandas对象的iterable,您传递了一个类型为“DataFrame”的对象。
在for循环中创建的各个dfs看起来正是我想要的,但我无法将它们全部连接在一起。实际上,您每次通过循环都在覆盖
df
。df_list = []
#for loop
for filename in file_names:
df = pd.read_csv(filename, index_col=False, header=0)
mean = df.mean(axis = 1)
median = df.median(axis = 1)
std = df.std(axis = 1)
df = pd.concat([mean, median, std], axis = 1, ignore_index = 1)
df_list.append(df)
data = pd.concat(df_list, axis=1)
而是收集列表中的数据帧,然后将该列表连接在一起
df_list = []
#for loop
for filename in file_names:
df = pd.read_csv(filename, index_col=False, header=0)
mean = df.mean(axis = 1)
median = df.median(axis = 1)
std = df.std(axis = 1)
df = pd.concat([mean, median, std], axis = 1, ignore_index = 1)
df_list.append(df)
data = pd.concat(df_list, axis=1)
换行
data = pd.concat(df, axis=1)
到
应该有用。。请务必让我知道,在任何情况下,请将最后3个平均值、中值和标准值添加到df“数据”中。不过上面的答案很好