我正在更改原始代码,以显示它的简化版本。但是,这是发生主要问题的地方。 使用以下代码:
Sp=pd.DataFrame()
l1=['a', 'b', 'c']
for i in l1:
Sp['col1'] = i
给我结果Sp为:
col1
我希望我的col1具有值a,b和c。任何人都可以提出这个问题的原因以及纠正方法。
编辑:
对于列表中的每个值,我使用它使用os连接到其他文件(文件名由列表值组成)。从那里选择了csv文件后,我从文件中获取了数据的均值,偏差等值,并将这些值分配给另一列中的sp。我的最终sp应该如下所示:
col1 Mean Median Deviation
a 1 1.1 0.5
b 2 2.1 0.5
c 3 3.1 0.5
答案 0 :(得分:0)
编辑:如果需要每个循环,请创建DataFrame
并对其进行处理,然后迭代并最终将DataFrame
追加到DataFrames列表中。最后concat
个所有聚合的DataFrame在一起:
dfs = []
l1 = ['a', 'b', 'c']
for i in l1:
df = pd.read_csv(file)
df = df.groupby('col').agg({'col1':'mean', 'col2':'sum'})
#another code
dfs.append(df)
Sp = pd.concat(dfs, ignore_index=True)
旧答案:
我认为需要使用DataFrame
来调用list
构造函数:
Sp = pd.DataFrame({'col1':l1})
如果确实需要它,但是它是slowiest possible solution:
6)一次更新一个空行。我已经看到这种方法使用WAY过多。这是迄今为止最慢的。它可能很普通(对于某些python结构来说相当快),但是DataFrame对索引进行了大量检查,因此每次更新一行总是很慢。创建新的结构和连接要好得多。
Sp=pd.DataFrame()
l1=['a', 'b', 'c']
for j, i in enumerate(l1):
Sp.loc[j, 'col1'] = i
print (Sp)
col1
0 a
1 b
2 c