从数据框中随机选择列

时间:2017-08-08 12:30:24

标签: python pandas

我的问题很简单: 有没有办法从Pandas中的数据框中随机选择列?为了清楚起见,我想随机选择附带值的 n 。我知道有一种随机选择行的方法:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="Enter any text"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="print"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Your text will appear here"/>
</LinearLayout>

所以问题是,它是否存在寻找随机列的等效方法?

2 个答案:

答案 0 :(得分:10)

sample也接受轴参数:

df = pd.DataFrame(np.random.randint(1, 10, (10, 5)), columns=list('abcde'))

df
Out: 
   a  b  c  d  e
0  4  5  9  8  3
1  7  2  2  8  7
2  1  5  7  9  2
3  3  3  5  2  4
4  8  4  9  8  6
5  6  5  7  3  4
6  6  3  6  4  4
7  9  4  7  7  3
8  4  4  8  7  6
9  5  6  7  6  9

df.sample(2, axis=1)
Out: 
   a  d
0  4  8
1  7  8
2  1  9
3  3  2
4  8  8
5  6  3
6  6  4
7  9  7
8  4  7
9  5  6

答案 1 :(得分:4)

您可以df.columns.to_series.sample(n=2)

随机抽样列,首先您需要通过调用to_series转换为Series,然后您可以像以前一样调用sample

In[24]:
df.columns.to_series().sample(2)

Out[24]: 
C    C
A    A
dtype: object

示例:

In[30]:
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
df

Out[30]: 
          a         b         c
0 -0.691534  0.889799  1.137438
1 -0.949422  0.799294  1.360521
2  0.974746 -1.231078  0.812712
3  1.043434  0.982587  0.352927
4  0.462011 -0.591438 -0.214508

In[31]:
df[df.columns.to_series().sample(2)]

Out[31]: 
          b         a
0  0.889799 -0.691534
1  0.799294 -0.949422
2 -1.231078  0.974746
3  0.982587  1.043434
4 -0.591438  0.462011