编辑:我正在寻找关于如何处理此问题的提示。
我试图在Pandas DF中执行相当高级的值查找,但我不知道如何处理它。
逻辑应如下:
我的DF看起来像这样:
id1 id2 content
20 10 item 1
20 10 item 2
20 10 item 3
30 20 item 4
30 20 item 5
30 20 item 6
我需要了解以下内容:
content previous_content sum_of_occurances
item 4 item 1 1
item 4 item 2 1
item 4 item 3 1
item 5 item 1 1
item 5 item 2 1
item 5 item 3 1
item 6 item 1 1
item 6 item 2 1
item 6 item 3 1
算什么人给我一个提示我应该如何在Python中处理它?我相当新,所以它可能是一个初学者级别的问题。先谢谢你。
答案 0 :(得分:0)
输入:
from io import StringIO
import pandas as pd
df = pd.read_table(StringIO("""id1 id2 content
20 10 item 1
20 10 item 2
20 10 item 3
30 20 item 4
30 20 item 5
30 20 item 6"""), sep=' ', engine='python')
使用pd.merge(自)连接id1 / id2上的数据框,并在通用列中添加后缀:
merged_df = pd.merge(df, df, how='inner', left_on='id2',
right_on='id1', suffixes=('','_previous'))
# Take essential columns
merged_df = merged_df[['content','content_previous']]
Groupby内容列,进行计数以获取出现的次数,重命名“索引”列:
# Reset index so we have something to count, then group by
grouped_df = merged_df.reset_index().groupby(['content','content_previous']).count()
# Reset index and change name of column
final_df = grouped_df.reset_index().rename(columns={'index':'sum_of_occurances'}) #There may be a better to get unique count across two columns
输出:
content content_previous sum_of_occurances
0 item 4 item 1 1
1 item 4 item 2 1
2 item 4 item 3 1
3 item 5 item 1 1
4 item 5 item 2 1
5 item 5 item 3 1
6 item 6 item 1 1
7 item 6 item 2 1
8 item 6 item 3 1