python - 按 Pandas 中的一列随机排列行

标签 python pandas

我有以下数据框示例。

    c1     c2
0   1       a
1   2       b
2   3       c
3   4       d
4   5       e

给定一个模板 c1 = [3, 2, 5, 4, 1],我想根据列 c1 的新顺序更改行的顺序>,所以它看起来像:

    c1     c2
0    3      c
1    2      b
2    5      e
3    4      d
4    1      a

我找到了以下线程,但随机播放是随机的。嗯。

Shuffle DataFrame rows

最佳答案

如果值在列表中以及 c1 列中都是唯一的,请使用 reindex :

df = df.set_index('c1').reindex(c1).reset_index()
print (df)
   c1 c2
0   3  c
1   2  b
2   5  e
3   4  d
4   1  a

处理列表和列中重复项的一般解决方案:

c1 = [3, 2, 5, 4, 1, 3, 2, 3]

#create df from list 
list_df = pd.DataFrame({'c1':c1})
print (list_df)
   c1
0   3
1   2
2   5
3   4
4   1
5   3
6   2
7   3

#helper column for count duplicates values
df['g'] = df.groupby('c1').cumcount()
list_df['g'] = list_df.groupby('c1').cumcount()

#merge together, create index from column and remove g column
df = list_df.merge(df).drop('g', axis=1)
print (df)
   c1 c2
0   3  c
1   2  b
2   5  e
3   4  d
4   1  a
5   3  c

关于python - 按 Pandas 中的一列随机排列行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52258852/

相关文章:

python - 如何在 Flask/Python 中循环表单?

javascript - 保持 WebSocket 连接有效

python - NumPy 中的 cumsum 函数在添加时会衰减吗?

Pandas ,将值集中到第一行每列的第一个单元格中列出

python-2.7 - 如何对 pandas 中的某些行索引重新排序

python - 从 DataFrame 中删除重复的行,但将一列保留为列表-Python

python - 使用 pandas 将列从一个 DataFrame 复制到另一个 DataFrame 的最快方法?

python - 如何在创建目录时显示消息?

python - 如何将对应于 'n' 的值列表排序到按 'n' 排序的大表中

python - pandas dataframe 根据列中的值删除后续行