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'])