我有一个循环,从数据透视表中选择一个特定的列并将其存储为一个系列。
'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的每次迭代都是新列)。我怎么能这样做?
答案 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)
不清楚ar
和audit_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"])
这完全取决于ar
和audit_pivot
的外观。