【发布时间】:2021-07-27 06:54:46
【问题描述】:
我不确定这个问题有多严重。但我遇到了问题并需要帮助:
我有一个示例 pandas datframe 如下(比如说):
df
C A V D
9 apar 1 0
8 bpar 4 8
7 cpar 7 7
0 apar 8 6
8 apar 9 4
9 bpar 3 2
所以我需要做的是附加现有的数据框,只要我有'A' col 有'apar',然后创建一个新值作为'apar_t',并通过说改变'V'的值( 0.5) 并更新数据框。所以在这个玩具示例中,我的数据框应该如下所示:
df
C A V D
9 apar 1.0 0
8 bpar 4.0 8
7 cpar 7.0 7
0 apar 8.0 6
8 apar 9.0 4
9 bpar 3.0 2
9 apar_t 0.5 0
0 apar_t 7.5 6
8 apar_t 8.5 4
我一直在做并且能够解决这个问题,但我认为它不是 pythonic 并且对于庞大的数据集效率不高。我会询问是否可以找到更好的方法来解决问题;
我做了以下事情:
sub_df = df[df['A']=='apar']
colsOrder = df.columns
sub_df = sub_df.rename(columns={'A': 'A1', 'V': 'V1'})
sub_df['A'] ='apar_t'
sub_df['V'] = sub_df['V1'] - 0.5
sub_df.drop(columns=['A1', 'V1'])
sub_df = sub_df[colsOrder]
frames =[df,sub_df]
DF = pd.concat(frames).reset_index(drop=True)
DF
代码有效,我得到了我想要的。但我一直在寻找更优雅的 Pythonic 和高效的解决方案。任何帮助将不胜感激。
【问题讨论】:
标签: python pandas iterator subset calculated-columns