我有一个类似的数据框:
>>>df = pd.DataFrame({"V1": range(1, 6)})
>>>df
V1
0 1
1 2
2 3
3 4
4 5
我想将数据集的平均值分为两个子集。如果该值大于平均值,则该值将在子集1中,其余值将在子集2中。
对于每个子集,我想对其中一个子集进行采样并创建一个新变量来标记它们,如“T”,其余值将标记为“F”。
结果应该是一个数据框,如:
V1 label
0 1 T
1 2 F
2 3 F
3 4 T
4 5 F
我使用了下面的代码,但它们没有用。我的问题有什么解决方案吗?
df['label'] = "F"
df[df['V1'] > df['V1'].mean()].sample(1)['label'] = "T"
答案 0 :(得分:0)
我能想到的一个简单的方法就是 -
In [4]: df['label'] = 'F'
In [33]: df.loc[df[df['V1'] > df['V1'].mean()].sample(1).index,'label'] = 'T'
In [34]: df.loc[df[df['V1'] <= df['V1'].mean()].sample(1).index,'label'] = 'T'
In [35]: df
Out[35]:
V1 label
0 1 T
1 2 F
2 3 F
3 4 F
4 5 T
答案 1 :(得分:0)
你应该写:
root@darkstar:~: pip install igraph
Collecting igraph
Downloading igraph-0.1.8-py2.py3-none-any.whl (119kB)
100% |████████████████████████████████| 122kB 1.7MB/s
Collecting ipython (from igraph)
Downloading ipython-3.2.1-py2-none-any.whl (3.4MB)
100% |████████████████████████████████| 3.4MB 203kB/s
Installing collected packages: ipython, igraph
Successfully installed igraph-0.1.8 ipython-3.2.1
root@darkstar:~: python -c 'print __import__("igraph")'
<module 'igraph' from '/usr/lib64/python2.7/site-packages/igraph/__init__.pyc'>
(max)user@darkstar:max$ python -c 'print __import__("igraph")'
<module 'igraph' from '/usr/lib64/python2.7/site-packages/igraph/__init__.pyc'>