ga9*_*asl 3 python indexing dataframe python-3.x pandas
我在索引 python 时遇到问题dataframe。我有数据框,我用循环填充它。我把它简化成这样:
d = pd.DataFrame(columns=['img', 'time', 'key'])
for i in range(5):
image = i
timepoint = i+1
key = i+2
temp = pd.DataFrame({'img':[image], 'timepoint':[timepoint], 'key': [key]})
d = pd.concat([d, temp])
Run Code Online (Sandbox Code Playgroud)
问题是因为它显示0为所有行的索引,我无法访问基于.loc[]. 有人知道如何解决问题并获得正常的索引列吗?
d = d.reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)
PS:更好的做法是创建一个行列表,然后将其转换为 DataFrame,计算成本要低得多,并且会立即创建一个良好的索引。
该列表可以是与 DataFrame init 中的列组合的列表列表,也可以是以列名作为键的字典列表。在你的情况下:
list_of_dicts = []
for i in range(5):
new_row = {'img': i, 'time': i+1, 'key': i+2}
list_of_dicts.append(new_row)
d = pd.DataFrame(new_row)
Run Code Online (Sandbox Code Playgroud)
您可能希望ignore_index在串联中使用参数:
d = pd.concat([d, temp], ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
这给了我以下结果:
img key time timepoint
0 0.0 2.0 NaN 1.0
1 1.0 3.0 NaN 2.0
2 2.0 4.0 NaN 3.0
3 3.0 5.0 NaN 4.0
4 4.0 6.0 NaN 5.0
Run Code Online (Sandbox Code Playgroud)