【发布时间】:2019-08-19 10:46:24
【问题描述】:
我想在 DataFrame 上的向量操作期间选择一个随机行。这就是我的inpDF 的样子:
string1 string2
0 abc dfe
1 ghi jkl
2 mno pqr
3 stu vwx
我正在尝试在这里找到函数getRandomRow():
outDF['string1'] = inpDF['string1']
outDF['string2'] = inpDF.getRandomRow()['string2']
所以outDF 最终看起来(例如)像这样:
string1 string2
0 abc jkl
1 ghi pqr
2 mno dfe
3 stu pqr
编辑 1:
我尝试按照this answer 中的建议使用sample() 函数,但这只会导致在所有行中复制相同的样本:
outDF['string1'] = inpDF['string1']
outDF['string2'] = inpDF.sample(n=1).iloc[0,:]['string2']
给出:
string1 string2
0 abc pqr
1 ghi pqr
2 mno pqr
3 stu pqr
编辑 2:
对于我的特定用例,即使从“n”行中选择值也足够了。所以,我尝试这样做(根据我在this answer 中读到的内容,我使用inpDF.index):
numRows = len(inpDF)
outDF['string1'] = inpDF['string1']
outDF['string2'] = inpDF.iloc[(inpDF.index + 2)%numRows,:]['string2']
但它只是从同一行中选择值,outDF 是这样的:
string1 string2
0 abc dfe
1 ghi jkl
2 mno pqr
3 stu vwx
而我期望它应该是这样的:
string1 string2
0 abc pqr
1 ghi vwx
2 mno dfe
3 stu jkl
【问题讨论】: