【问题标题】:How to Prevent Triplicates in Pandas DataFrame如何防止 Pandas DataFrame 中的三次重复
【发布时间】:2016-07-29 03:17:56
【问题描述】:

我有以下代码:

stim_df = pd.concat([block1,block2,bloc3,block4], axis=0, ignore_index=True).sample(frac=1).reset_index(drop=True)
stim_df.columns = ["Word","Condition"] 

#Check for triplicates: 
for j in xrange(len(stim_df)):
    if j == 0 or j == 1:
        pass
    else:
        if stim_df["Condition"][j] == stim_df["Condition"][j-1] == stim_df["Condition"][j-2]:
            stim_df[j-2:j+3] = stim_df[j-2:j+3].reindex([j-2,j-1,j+2,j,j+1])

我试图防止发生的是三个相邻的行具有相同的“条件”值一起出现。因此,如果我的条件是“1”、“2”和“3”,我想阻止像 1,1,2,2,2,1,3,1 这样的订单发生,其中条件值 2 出现三个连续几次。

这是 df 的一部分的快速示例:

        Condition  Word
0           1  neut
1           2   pos
2           3   neg
3           3   neg
4           3   neg
5           2   pos
6           1  neut
7           2   pos
8           2   pos
9           2   pos
10          2   pos

我的代码无法解决问题。创建一个伪随机函数会更好,而不是在我已经随机混合数据帧之后尝试处理这个问题?任何帮助或建议都会很有帮助。

【问题讨论】:

  • 你想要达到什么目的?如果原始数据集没有这些三元组,您可以从该集合中选择“块”并打乱这些块,以便您的“边”是不同的值?
  • 你能不能给我们看一下你的DataFrame的小sn-p?
  • @user666 刚刚添加了一个示例
  • 这道题约99%与算法相关,约1%与pandas相关。您的标签会远离您的目标受众,而您的数据框 sn-ps 只会让那些查看问题的人感到困惑。您的问题在熊猫的背景下出现这一事实,不一定是熊猫问题。

标签: python pandas random dataframe


【解决方案1】:

您是要生成一个没有重复的序列,还是只删除像 2,2,2 这样的序列?

如果您正在寻找后者,请尝试使用diff 删除重复序列。

df[~(df.Condition.diff() == 0)]

    Condition   Word
0       1       neut
1       2       pos
2       3       neg
5       2       pos
6       1       neut
7       2       pos

【讨论】:

    猜你喜欢
    • 2017-11-10
    • 1970-01-01
    • 2014-07-16
    • 2019-11-01
    • 2017-09-03
    • 2019-03-10
    • 2013-02-03
    • 2021-07-31
    • 2019-07-19
    相关资源
    最近更新 更多