Python 如何在dataframe中获取上一列值?
我是python新手,正在尝试进行一些数据操作,我在下面解释了这些操作 这是我正在使用的CSV文件 我已经加载到一个数据帧(df_l)中,它如下所示Python 如何在dataframe中获取上一列值?,python,pandas,dataframe,Python,Pandas,Dataframe,我是python新手,正在尝试进行一些数据操作,我在下面解释了这些操作 这是我正在使用的CSV文件 我已经加载到一个数据帧(df_l)中,它如下所示 Line_items Format 0 Connectivity : Master NaN 1 Export Type {"hierarchyEntityLongId":101000000171,"entityF... 2 Submit? {"d
Line_items Format
0 Connectivity : Master NaN
1 Export Type {"hierarchyEntityLongId":101000000171,"entityF...
2 Submit? {"dataType":"BOOLEAN"}
3 Approval Status {"hierarchyEntityLongId":101000000073,"entityF...
4 --- AUX --- {"minimumSignificantDigits":4,"decimalPlaces":...
5 L1 Export Level {"hierarchyEntityLongId":101000000093,"entityF...
6 L2 Customer {"hierarchyEntityLongId":101000000011,"entityF...
7 L2 L3 Customer {"hierarchyEntityLongId":101000000101,"entityF...
8 Planning Customer {"hierarchyEntityLongId":101000000021,"entityF...
9 L2 Export Code {"textType":"GENERAL","dataType":"TEXT"}
10 Display Name {"textType":"GENERAL","dataType":"TEXT"}
11 Short Name {"textType":"GENERAL","dataType":"TEXT"}
12 SAP Daily Purchases NaN
13 Quantity Carton {"minimumSignificantDigits":4,"decimalPlaces":...
14 Custom Group 1 {"hierarchyEntityLongId":101000000014,"entityF...
我添加了一个列(IsModule),用于检查Format col=NAN与否。如果是,则使用此代码Ismodule=True,否则为False
df_l['IsModule'] = pd.isna(df_l["Format"])
df_l
我添加了另一列,让我们称之为New,其中如果IsModule=True,则col New=Line\u中的行的值,col New=New-1中的行的其他值,即col New中的前一行值
我使用了下面的代码
df_l.loc[df_l['IsModule']==0,'New'] = df_l.loc[1,'New']
for i in range(1,len(df_l)):
if df_l.loc[i,'IsModule'] == 0 :
df_l.loc[i,'Module_name']=(df_l.loc[i-1,'Module_name'])
else :
df_l.loc[i,'Module_name']=(df_l.loc[i,'Line_items'])
df_l[['Line_items','IsModule','Module_name']].head(15)
df_l.head(15)
我获得了期望的输出,但是否有更好的/替代方法?似乎简单的东西没有额外的代码行
我只是想学习,变得更好
谢谢您想要
where
和ffill()
输出:
Line_items IsModule New
0 Connectivity : Master True Connectivity : Master
1 Export Type False Connectivity : Master
2 Submit? False Connectivity : Master
3 Approval Status False Connectivity : Master
4 --- AUX --- False Connectivity : Master
5 L1 Export Level False Connectivity : Master
6 L2 Customer False Connectivity : Master
7 L2 L3 Customer False Connectivity : Master
8 Planning Customer False Connectivity : Master
9 L2 Export Code False Connectivity : Master
10 Display Name False Connectivity : Master
11 Short Name False Connectivity : Master
12 SAP Daily Purchases True SAP Daily Purchases
13 Quantity Carton False SAP Daily Purchases
14 Custom Group 1 False SAP Daily Purchases
Line_items IsModule New
0 Connectivity : Master True Connectivity : Master
1 Export Type False Connectivity : Master
2 Submit? False Connectivity : Master
3 Approval Status False Connectivity : Master
4 --- AUX --- False Connectivity : Master
5 L1 Export Level False Connectivity : Master
6 L2 Customer False Connectivity : Master
7 L2 L3 Customer False Connectivity : Master
8 Planning Customer False Connectivity : Master
9 L2 Export Code False Connectivity : Master
10 Display Name False Connectivity : Master
11 Short Name False Connectivity : Master
12 SAP Daily Purchases True SAP Daily Purchases
13 Quantity Carton False SAP Daily Purchases
14 Custom Group 1 False SAP Daily Purchases
df['New'] = df['Line_items'].where(df['IsModule']).ffill()
Line_items IsModule New
0 Connectivity : Master True Connectivity : Master
1 Export Type False Connectivity : Master
2 Submit? False Connectivity : Master
3 Approval Status False Connectivity : Master
4 --- AUX --- False Connectivity : Master
5 L1 Export Level False Connectivity : Master
6 L2 Customer False Connectivity : Master
7 L2 L3 Customer False Connectivity : Master
8 Planning Customer False Connectivity : Master
9 L2 Export Code False Connectivity : Master
10 Display Name False Connectivity : Master
11 Short Name False Connectivity : Master
12 SAP Daily Purchases True SAP Daily Purchases
13 Quantity Carton False SAP Daily Purchases
14 Custom Group 1 False SAP Daily Purchases