根据Dataframe Pandas

时间:2016-09-09 15:40:39

标签: python pandas random dataframe

  

我有一个类似的df1,有千列和数千行。我会   喜欢根据第1行单元格中的条件进行随机抽样   (date0)基本上我想过滤列并返回   它们和Datetime索引基于条件,如果单元格上   date0行等于V1,然后对cell == V2进行相同的采样   V3..etc。

     

然后我将所有这些样本连接成一个单数   数据帧。我想确保返回原始日期时间索引   而不是通用索引0,1,2,3 ...

        abc   def   ghi   jkl   mno    pqr
date0   'V1'  'V1'  'V2'  'V3'  'V0'  'V1'

date1     2     5    6     3      2    1

date2     3     1    1     3      5    6

date3     4     4    2     7      8    0

要过滤我到目前为止尝试了这个但是它不起作用 数据集1 = Dataset.ix[:,(random.sample(list(Dataset.iloc[0,:]=='V2'), 4))].copy() 4只是返回列数的任意数。 然后我需要连接。

谢谢!

1 个答案:

答案 0 :(得分:1)

您希望将date0作为列索引的一部分。

df1 = df.T.set_index('date0', append=True).T
df1

enter image description here

然后您可以使用xs来截取

df1.xs('V1', axis=1, level=1)

enter image description here

对评论的回应
这适用于在不知道行索引值

的情况下使用第一行
df1 = df.iloc[1:].T.set_index(df.iloc[0], append=True).T

df1.xs('V1', axis=1, level=1)

对第二条评论的回应
iloc[1:]旨在明确删除第一行。如果你想保留它,请不要包含该部分。

df1 = df.T.set_index(df.iloc[0], append=True).T
df1

enter image description here

df1.xs('V1', axis=1, level=1)

enter image description here