【发布时间】:2020-04-28 19:10:12
【问题描述】:
我有一个数据框df
ID KD DT
0 1 2 5.6
1 1 5 8.7
4 4 9 1.9
5 4 2 1.7
6 4 7 8.8
2 6 9 8.3
3 6 7 7.2
9 7 36 3.1
10 7 2 2.2
12 7 7 5.6
我想创建一个数据框,以便为每个唯一的KD 值添加新的{-1,0,1} 列,具体取决于ID(来自ID 值列表)和DT。 ID = [1,2,4,6,7,8]。新数据框应该有len(ID)+1 列,第一列是唯一的KD 值和len(D) 列,这样column ID = 1 如果df.loc[(df.ID==id) & (df.KD==kd),'DT'] >= 5,column ID = 0 如果(kd,id) 对不在df 和column ID = -1如果df.loc[(df.ID==id) & (df.KD==kd),'DT'] < 5
对于上面给出的数据框,新的数据框应该是
df2
KD 1 2 4 6 7 8
0 2 1 0 -1 0 -1 0
1 5 1 0 0 0 0 0
2 7 0 0 1 1 1 0
3 9 0 0 -1 1 0 0
4 36 0 0 0 0 -1 0
实际上,唯一的KD 和ID 的数量非常大(在10K 范围内)。任何有助于找到一种非常有效的方法来做到这一点。请问?
【问题讨论】:
-
您的第 3 行第 4 列是否正确? KD=9,ID=4,DT值为1.9小于5,不应该是-1吗?
-
@ScottBoston 出现在 :-)。已更正。
标签: python-3.x pandas dataframe