Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在dataframe中获取上一列值?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何在dataframe中获取上一列值?

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

我是python新手,正在尝试进行一些数据操作,我在下面解释了这些操作

这是我正在使用的CSV文件

我已经加载到一个数据帧(df_l)中,它如下所示


    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