kum*_*han 7 python dataframe pandas
我有一个像Dataframe这样的
Sou Des
1 3
1 4
2 3
2 4
3 1
3 2
4 1
4 2
Run Code Online (Sandbox Code Playgroud)
我需要为0到1之间的每一对分配随机值,但必须为类似的对分配相同的随机值,如"1-3","3-1"和其他对.我期待结果数据框如
Sou Des Val
1 3 0.1
1 4 0.6
2 3 0.9
2 4 0.5
3 1 0.1
3 2 0.9
4 1 0.6
4 2 0.5
Run Code Online (Sandbox Code Playgroud)
如何在python pandas中为"AB"和"BA"分配相同的随机值类似的对.
让我们先创建一个按axis=1助手DF 排序:
In [304]: x = pd.DataFrame(np.sort(df, axis=1), df.index, df.columns)
In [305]: x
Out[305]:
Sou Des
0 1 3
1 1 4
2 2 3
3 2 4
4 1 3
5 2 3
6 1 4
7 2 4
Run Code Online (Sandbox Code Playgroud)
现在我们可以按列分组:
In [306]: df['Val'] = (x.assign(c=1)
.groupby(x.columns.tolist())
.transform(lambda x: np.random.rand(1)))
In [307]: df
Out[307]:
Sou Des Val
0 1 3 0.989035
1 1 4 0.918397
2 2 3 0.463653
3 2 4 0.313669
4 3 1 0.989035
5 3 2 0.463653
6 4 1 0.918397
7 4 2 0.313669
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |