【发布时间】:2021-04-03 02:36:53
【问题描述】:
我有列类型、日期和金额的数据框 df1。 我的目标是使用 df1 中的日期子集创建一个 Dataframe df2,其中每种类型都有一个列,其中类型的数量作为相应日期的值。
输入数据框:
df1 =
,type,Date,amount
0,42,2017-02-01,4
1,42,2017-02-02,5
2,42,2017-02-03,7
3,42,2017-02-04,2
4,48,2017-02-01,6
5,48,2017-02-02,8
6,48,2017-02-03,3
7,48,2017-02-04,6
8,46,2017-02-01,3
9,46,2017-02-02,8
10,46,2017-02-03,3
11,46,2017-02-04,4
如果日期的子集是 2017-02-02 和 2017-02-04,则所需的输出:
df2 =
,Date,42,48,46
0,2017-02-02,5,8,8
1,2017-02-04,2,6,4
我试过这样:
types = list(df1["type"].unique())
dates = ["2017-02-02","2017-02-04"]
df2 = pd.DataFrame()
df2["Date"]=dates
for t in types:
df2[t] = df1[(df1["type"]==t)&(df1[df1["type"]==t][["Date"]]==df2["Date"])][["amount"]]
但是使用这个解决方案我得到了很多 NaN,看来我的比较条件是错误的。 这是我得到的输出:
,Date,42,48,46
0,2017-02-02,,,
1,2017-02-04,,,
【问题讨论】: