Python 在pandas中创建常量列

Python 在pandas中创建常量列,python,pandas,dataframe,Python,Pandas,Dataframe,各位,你们知道我如何在数据框中创建一列,每个帐户都有第一个观察值吗?例如: Account | Month | Debt_left Acc1 | 0 | -100 Acc1 | 1 | -90 Acc2 | 0 | -120 Acc2 | 1 | -110 To become: Account | Month

各位,你们知道我如何在数据框中创建一列,每个帐户都有第一个观察值吗?例如:

Account    | Month      | Debt_left 
Acc1       |     0      |     -100
Acc1       |     1      |     -90
Acc2       |     0      |     -120
Acc2       |     1      |     -110

To become:
Account    | Month      | Debt_left | initial_debt
Acc1       |     0      |     -100  |    -100
Acc1       |     1      |     -90   |    -100
Acc2       |     0      |     -120  |    -120
Acc2       |     1      |     -110  |    -120

您需要在之后重命名列,但这样做可以:

import pandas as pd

df = pd.DataFrame( {"Account" : ["Acc1","Acc1","Acc2","Acc2"],
               "Month" : [0,1,0,1],
               "Debt_left" : [-100,-90,-120,-110]})

pd.merge( df, df.groupby('Account').first(), how = "inner", on="Account"  )[["Account","Month_x","Debt_left_x","Debt_left_y"]] 

你确信你的例子有意义吗?每个帐户的第一次观察应仅产生2行。解决方案假定df按帐户和月份排序。这是真的吗?是的,是真的。我所做的是首先创建一个新的df[first=df.groupby'Account'['debt\u left'].first]为每个帐户提供第一个条目,然后在现有的数据框架上加入它:[first=first.set\u index'Account'][df.set\u idex'Account.joinfirst,rsuffix='u first']谢谢!我用一个左连接创建了一个新的数据帧,但是您的解决方案要干净得多。谢谢。
# Assuming that the debt_left does not increase

import io
import pandas as pd

data = io.StringIO('''
Account    | Month      | Debt_left 
Acc1       |     0      |     -100
Acc1       |     1      |     -90
Acc2       |     0      |     -120
Acc2       |     1      |     -110

''')

df = pd.read_csv(data, sep='|')
df.columns = df.columns.str.strip()

mapper = df.set_index('Month').groupby('Account')['Debt_left'].min().to_dict()

df['init_value'] = df['Account'].map(mapper)

print(df)