将一系列值作为新列附加到数据框

时间:2018-02-05 22:01:59

标签: python pandas loops append

我有一个循环,从数据透视表中选择一个特定的列并将其存储为一个系列。

'ar'是一个包含大量列的pandas数据框。其中一列是“申请年份”,使用如下:

for i, row in ar.iterrows():
    GC_t1 = audit_pivot['GC', (row['year_of_application']-1)] # GS for t-1
    GC_t2 = audit_pivot['GC', (row['year_of_application']-2)] # GS for t-2

我想将这些系列中的每一个作为新列附加到循环结束之前(以便GC_t1和GC_t2的每次迭代都是新列)。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

append each of these series as a new column你的意思有点不清楚,但我可以这样做:

gc_t1_dfs = []
gc_t1_dfs = []
for i, row in ar.iterrows():
    gc_t1_dfs.append(pd.Series(audit_pivot['GC', (row['year_of_application']-1)]).to_frame())
    gc_t2_dfs.append(pd.Series(audit_pivot['GC', (row['year_of_application']-2)]).to_frame())

GC_t1_df = pd.concat(gc_t1_dfs)
GC_t2_df = pd.concat(gc_t2_dfs)

不清楚araudit_pivot的样子,但我不建议迭代ar,因为它可能效率很低。相反,尝试一下以下几点:

import numpy as np
gc_t1_vals = np.ravel(audit_pivot['GC'][(ar['year_of_application']-1).tolist()].values)
gc_t2_vals = np.ravel(audit_pivot['GC'][(ar['year_of_application']-2).tolist()].values)

gc_t_df = pd.DataFrame(zip(gc_t1_vals, gc_t2_vals), columns=["GC T1", "GC T2"])

这完全取决于araudit_pivot的外观。