Pandas 带日期的数据操作
Pandas data manipulation with date
我有两个df,我想在一个基础上操作一个。我的 df1 看起来像这样
日期格式为 mm-dd-yyyy
Date
col_1
col_2
col_3 = col_2/col_1
01/01/2021
100
110
1.1
02/01/2021
110
110
1
03/01/2021
120
132
1.1
04/01/2021
100
120
1.2
现在我的另一个数据框看起来像这样
Date
col_1
col_2
01/01/2021
A
110
01/01/2021
B
110
01/01/2021
C
132
01/01/2021
D
120
02/01/2021
A
110
02/01/2021
B
110
02/01/2021
C
132
03/01/2021
D
120
现在我想按日期将 df1 的“col_3”乘以 df2 的“col_2”。请帮忙
我试过了
def (df1,df2,ind) #ind is integer for month
df2['col_2'] = df2['col_2'] * df1['col_3'].iloc(ind-1)
return df2
我想要的输出看起来像
Date
col_1
col_2
01/01/2021
A
121
01/01/2021
B
121
01/01/2021
C
145.2
01/01/2021
D
132
02/01/2021
A
110
02/01/2021
B
110
02/01/2021
C
132
03/01/2021
D
132
IIUC,使用 Date
列作为两个数据帧的索引,然后应用您的操作:
df2['col_3'] = df2.set_index('Date')['col_2'] \
.mul(df1.set_index('Date').reindex(df2['Date'])['col_3']).values
print(df2)
# Output
Date col_1 col_2 col_3
0 01/01/2021 A 110 121.0
1 01/01/2021 B 110 121.0
2 01/01/2021 C 132 145.2
3 01/01/2021 D 120 132.0
4 02/01/2021 A 110 110.0
5 02/01/2021 B 110 110.0
6 02/01/2021 C 132 132.0
7 03/01/2021 D 120 132.0
我有两个df,我想在一个基础上操作一个。我的 df1 看起来像这样 日期格式为 mm-dd-yyyy
Date | col_1 | col_2 | col_3 = col_2/col_1 |
---|---|---|---|
01/01/2021 | 100 | 110 | 1.1 |
02/01/2021 | 110 | 110 | 1 |
03/01/2021 | 120 | 132 | 1.1 |
04/01/2021 | 100 | 120 | 1.2 |
现在我的另一个数据框看起来像这样
Date | col_1 | col_2 |
---|---|---|
01/01/2021 | A | 110 |
01/01/2021 | B | 110 |
01/01/2021 | C | 132 |
01/01/2021 | D | 120 |
02/01/2021 | A | 110 |
02/01/2021 | B | 110 |
02/01/2021 | C | 132 |
03/01/2021 | D | 120 |
现在我想按日期将 df1 的“col_3”乘以 df2 的“col_2”。请帮忙
我试过了
def (df1,df2,ind) #ind is integer for month
df2['col_2'] = df2['col_2'] * df1['col_3'].iloc(ind-1)
return df2
我想要的输出看起来像
Date | col_1 | col_2 |
---|---|---|
01/01/2021 | A | 121 |
01/01/2021 | B | 121 |
01/01/2021 | C | 145.2 |
01/01/2021 | D | 132 |
02/01/2021 | A | 110 |
02/01/2021 | B | 110 |
02/01/2021 | C | 132 |
03/01/2021 | D | 132 |
IIUC,使用 Date
列作为两个数据帧的索引,然后应用您的操作:
df2['col_3'] = df2.set_index('Date')['col_2'] \
.mul(df1.set_index('Date').reindex(df2['Date'])['col_3']).values
print(df2)
# Output
Date col_1 col_2 col_3
0 01/01/2021 A 110 121.0
1 01/01/2021 B 110 121.0
2 01/01/2021 C 132 145.2
3 01/01/2021 D 120 132.0
4 02/01/2021 A 110 110.0
5 02/01/2021 B 110 110.0
6 02/01/2021 C 132 132.0
7 03/01/2021 D 120 132.0