2016-09-09 139 views
0

我有一个与千列和千行相似的df1。我想 喜欢做一个随机抽样的第1行细胞 (date0)基本上我想过滤的列,并返回 他们和日期时间索引根据条件,如果 date0行上的单元格是等于V1,然后对单元== 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

您想包括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

+0

感谢PRSquared!如果我不知道刚刚添加的冷杉名称,该怎么办?有没有办法得到它? – uniXVanXcel

+0

@Pythus我更新后 – piRSquared

+0

谢谢我要检查,然后将您的答案标记为接受答案。很感谢! – uniXVanXcel