行到基于另一列的列好吗

时间:2019-07-02 12:18:10

标签: python pandas merge data-manipulation

我已经合并了两个数据框,但是现在有重复的行。我想将行移动到基于/按列值分组的列。

我已经合并了两个数据框:

df_merge = pd.merge(top_emails_df, keyword_df, on='kmed_idf')

新数据框如下所示:

import pandas as pd
df = pd.DataFrame({'kmed_idf': ['1', '1', '1', '2', '2'], 
               'n_docs': [796, 796, 796, 200, 200],
               'email_from: ['foo', 'foo', 'foo', 'bar', 'bar'})

我试图堆叠数据框:

newtest = df_merge.set_index(['kmed_idf']).stack(level=0)
newtest= newtest.to_frame()

但这仅创建了一个系列。转换为数据框后,它仍然不是很有用。

我想要的是一个数据框,其中每一行都是'kmed_idf'的唯一值,并且现在这些行是列。像这样:

import pandas as pd
df = pd.Dataframe({'kmed_idf': ['1', '2', '3'],
                   'n_docs': [796],
                   'n_docs2': [796],
                   'n_docs3,: [796]})

这将使删除重复项变得更加容易。我也尝试过使用dropplicate pandas函数,但无济于事。

1 个答案:

答案 0 :(得分:0)

如果您只想删除重复项,我认为应该使用.drop_duplicates函数...

我不知道为什么它对您不起作用,但是请尝试以下操作:

import pandas as pd

df = pd.DataFrame({'kmed_idf': ['1', '1', '1', '2', '2'],
                   'n_docs': [796, 796, 796, 200, 200],
                   'email_from': ['foo', 'foo', 'foo', 'bar', 'bar']})

df.drop_duplicates(inplace=True)

print(df)

输出:

  email_from kmed_idf  n_docs
0        foo        1     796
3        bar        2     200