![](/img/trans.png)
[英]Check if column name from one dataframe matches with index value of another dataframe and populate value into a new column
[英]New Column incrementally adds one from max(value) of another dataframe
如何添加使用max(df2.days) + 1
(1175) 的列df1.days
並為所有剩余行遞增添加一個?
我不能為此使用 cumsum。
df1 = pd.DataFrame({
'date': ['2001-01-01','2001-01-02','2001-01-03', '2001-01-04', '2001-01-05'],
'prod': [800, 900, 1200, 700, 600]})
df2 = pd.DataFrame({'days': [99,1,188,1173,1174]})
所需的數據框:
print(d1)
date prod days
0 2001-01-01 800 1175
1 2001-01-02 900 1176
2 2001-01-03 1200 1177
3 2001-01-04 700 1778
4 2001-01-05 600 1779
pandas
方法使用fillna
和cumsum
:
df1.loc[0, 'days'] = df2['days'].max()
df1['days'] = df1['days'].fillna(1).cumsum()
date prod days
0 2001-01-01 800 1175.0
1 2001-01-02 900 1176.0
2 2001-01-03 1200 1177.0
3 2001-01-04 700 1178.0
4 2001-01-05 600 1179.0
numpy
方法df1['days'] = np.cumsum(np.append([df2['days'].max()], np.ones(len(df1)-1)))
date prod days
0 2001-01-01 800 1175.0
1 2001-01-02 900 1176.0
2 2001-01-03 1200 1177.0
3 2001-01-04 700 1178.0
4 2001-01-05 600 1179.0
cumsum
和for loop
(不是最好的)
values = []
value = df2['days'].max()
for x in range(len(df1)):
values.append(value)
value += 1
df1['days'] = values
date prod days
0 2001-01-01 800 1175
1 2001-01-02 900 1176
2 2001-01-03 1200 1177
3 2001-01-04 700 1178
4 2001-01-05 600 1179
您可以插入一個范圍為 =(df2 days max+1 to df2 days max+number of rows) 的列。 第一個參數len(df1.columns)是在最后添加這一列,不影響邏輯
df1.insert(len(df1.columns),'days',range(df2.days.max()+1, df2.days.max()+1+len(df1)))
date prod days
0 2001-01-01 800 1175
1 2001-01-02 900 1176
2 2001-01-03 1200 1177
3 2001-01-04 700 1178
4 2001-01-05 600 1179
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.