我有一个热编码的数据帧,例如:
| qtd| a | b | c | d | e | ...z|
|-----+-----+-----|----|----+-----+-----|
| 90 | 1 | 0 | 0 | 0 | 0 | 0 |
| 10 | 0 | 0 | 0 | 0 | 0 | 1 |
| 40 | 0 | 1 | 0 | 0 | 0 | 0 |
| 80 | 0 | 0 | 1 | 0 | 0 | 0 |
| 90 | 0 | 1 | 0 | 0 | 0 | 0 |
我想用a
中的值将列qtd
的值替换为无穷大,其中列的值为1,a
中只有一个1值无限数据帧子帧。
例如:
| qtd| a | b | c | d | e | ...z|
|-----+-----+-----|----|----+-----+-----|
| 90 | 90 | 0 | 0 | 0 | 0 | 0 |
| 10 | 0 | 0 | 0 | 0 | 0 | 10 |
| 40 | 0 | 40 | 0 | 0 | 0 | 0 |
| 80 | 0 | 0 | 80 | 0 | 0 | 0 |
| 90 | 0 | 90 | 0 | 0 | 0 | 0 |
答案 0 :(得分:3)
您可以选择所有列,而不用DataFrame.iloc
首先选择,而用DataFrame.mul
逐列选择:
df.iloc[:, 1:] = df.iloc[:, 1:].mul(df['qtd'], axis=0)
print (df)
qtd a b c d e z
0 90 90 0 0 0 0 0
1 10 0 0 0 0 0 10
2 40 0 40 0 0 0 0
3 80 0 0 80 0 0 0
4 90 0 90 0 0 0 0
如果列并非总是第一列,则可以按Index.difference
获取列名称,并按子集进行选择:
cols = df.columns.difference(['qtd'])
df[cols] = df[cols].mul(df['qtd'], axis=0)
如果第一列是索引:
df = df.mul(df.index, axis=0)
print (df)
a b c d e z
qtd
90 90 0 0 0 0 0
10 0 0 0 0 0 10
40 0 40 0 0 0 0
80 0 0 80 0 0 0
90 0 90 0 0 0 0
答案 1 :(得分:1)
这是const add = (x, y) => x + y;
[ 3, 1, 2 ].reduce( add );
广播方式
numpy