python - 为多类分类创建一个 DataFrame
问题描述
我有一个包含 n 行的数据框,我想从 m 个类中随机为每一行分配一个类,以使所有类的比例相同。
例子:
>>> classes = ['c1','c2','c3','c4']
>>> df = pd.DataFrame(np.random.randn(100, 5), columns = list("abcde"))
>>> df
a b c d e
0 -0.341559 1.499159 0.269614 -0.198663 -1.081290
1 -1.966477 1.902292 -0.092296 -1.730710 -1.342866
2 1.188634 -2.851902 1.130480 -0.495677 -0.569557
3 -0.816190 1.205463 1.157507 -0.217025 -0.160752
4 -2.001114 -0.818852 -0.696057 -0.874615 -0.577101
.. ... ... ... ... ...
95 0.502192 0.434275 0.358244 -0.763562 -0.787102
96 -1.071011 0.045387 0.297905 -0.120974 0.185418
97 2.458274 -1.852953 -0.049336 -0.150604 -0.292824
98 1.992513 -0.431639 0.566920 -1.289439 0.626914
99 0.685915 -0.723009 -0.168497 1.630057 1.587378
[100 rows x 5 columns]
预期输出:
>>> df
a b c d e class
0 -0.341559 1.499159 0.269614 -0.198663 -1.081290 c3
1 -1.966477 1.902292 -0.092296 -1.730710 -1.342866 c4
2 1.188634 -2.851902 1.130480 -0.495677 -0.569557 c2
3 -0.816190 1.205463 1.157507 -0.217025 -0.160752 c3
4 -2.001114 -0.818852 -0.696057 -0.874615 -0.577101 c1
.. ... ... ... ... ... ...
95 0.502192 0.434275 0.358244 -0.763562 -0.787102 c1
96 -1.071011 0.045387 0.297905 -0.120974 0.185418 c3
97 2.458274 -1.852953 -0.049336 -0.150604 -0.292824 c2
98 1.992513 -0.431639 0.566920 -1.289439 0.626914 c1
99 0.685915 -0.723009 -0.168497 1.630057 1.587378 c2
[100 rows x 6 columns]
班级比例相同
解决方案
这应该做的工作
classes = ['c1','c2','c3','c4']
df = pd.DataFrame(np.random.randn(100, 5), columns = list("abcde"))
classes = np.repeat(classes, df.shape[0]/len(classes))
np.random.shuffle(classes)
df['class'] = classes
推荐阅读
- angularjs - 在 Angular js 中使用 ui-select 的文本框下拉菜单
- sqlite - 使用 sqlite-net-pcl 和 Xamarin.Forms 访问数学函数
- javascript - NodeJs 中的 next() 是什么?
- java - Mybatis 启动时遇到“Caused by: java.net.UnknownHostException: localhost”,为什么?
- r - 如何使 R 基础图在边界框内更大?
- c++ - 类的成员函数定义在头文件中,在 C++ 中的单独 .cpp 文件中
- curl - Homebrew 禁用 curl 配置文件。如何设置 no_proxy 以获取没有代理的包?
- java - 编写在持续集成环境中运行的集成测试的最佳实践或有效方法
- python-2.7 - 如何删除特定版本的 Python?
- r - 如何在 Rstudio anaconda 中更新 R