【问题标题】:Append a series of values to a dataframe as a new column将一系列值作为新列附加到数据框
【发布时间】:2018-07-15 21:06:16
【问题描述】:

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

'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 的每次迭代都是新列)。我该怎么做?

【问题讨论】:

标签: python pandas loops append


【解决方案1】:

有点不清楚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 的外观。

【讨论】:

    猜你喜欢
    • 2021-11-07
    • 2019-01-22
    • 1970-01-01
    • 2018-04-06
    • 2021-06-06
    • 2020-09-12
    • 1970-01-01
    • 2019-10-12
    • 2021-12-07
    相关资源
    最近更新 更多