Python 如何在for循环中追加pandas.DataFrame中的行
嗨,我正在尝试在新创建的数据框中追加行Python 如何在for循环中追加pandas.DataFrame中的行,python,pandas,Python,Pandas,嗨,我正在尝试在新创建的数据框中追加行 ###expression for i in active_brain_regions: indices = np.where(LM == i) expr = gene[indices] mean = np.mean(expr) dat= [[i, mean, str("nifti")]] dd = pd.DataFrame(dat, columns = ['region', 'mean expr', 'gene_
###expression
for i in active_brain_regions:
indices = np.where(LM == i)
expr = gene[indices]
mean = np.mean(expr)
dat= [[i, mean, str("nifti")]]
dd = pd.DataFrame(dat, columns = ['region', 'mean expr', 'gene_id'])
dd.append(dd)
dd应该看起来像
0.0 -0.424069 nifti
1.0 -1.0 nifti
.
.
.
11.0 0.23352 nifti
但是在运行for循环之后,dd只是一个大小为(1,3)的数据帧,最后一个条目是区域11。您可以分配回,因为使用了以下方法: 或者使用纯python
append
(就地工作)创建数据帧列表,并仅使用一次:
L = []
for i in active_brain_regions:
indices = np.where(LM == i)
expr = gene[indices]
mean = np.mean(expr)
dat= [[i, mean, str("nifti")]]
dd = pd.DataFrame(dat, columns = ['region', 'mean expr', 'gene_id'])
L.append(dd)
df = pd.concat(L, ignore_index=True)
L = []
for i in active_brain_regions:
indices = np.where(LM == i)
expr = gene[indices]
mean = np.mean(expr)
dat= [[i, mean, str("nifti")]]
L.append(dat)
df = pd.DataFrame(L, columns = ['region', 'mean expr', 'gene_id'])
但最快的解决方案应该是创建列表列表并只向DataFrame
构造函数传递一次:
L = []
for i in active_brain_regions:
indices = np.where(LM == i)
expr = gene[indices]
mean = np.mean(expr)
dat= [[i, mean, str("nifti")]]
dd = pd.DataFrame(dat, columns = ['region', 'mean expr', 'gene_id'])
L.append(dd)
df = pd.concat(L, ignore_index=True)
L = []
for i in active_brain_regions:
indices = np.where(LM == i)
expr = gene[indices]
mean = np.mean(expr)
dat= [[i, mean, str("nifti")]]
L.append(dat)
df = pd.DataFrame(L, columns = ['region', 'mean expr', 'gene_id'])