1

名前付き列の各位置を追跡する必要があります。したがって、最初の列に同じ名前が k 回ある場合、その値は 1*k になります。それは例で最もよく示されています:

df1 = pd.DataFrame({'name':['n1', 'n2', 'n3']})
df1['pos'] = df1.index + 1

df2 = pd.DataFrame({'name':['n1', 'n3', 'n4']})
df2['pos'] = df2.index + 1

print "df1:\n", df1, '\n'
print "df2:\n", df2, '\n'

# Hack
df3 = df1.merge(df2, on='name', how='outer')
df3 = df3.fillna(0)
print df3

# Sum the desired values
df3['pos'] = df3.pos_x + df3.pos_y
del df3['pos_x']
del df3['pos_y']

# Produce desired output
print "\nDesired Output:\n", df3

出力は次のとおりです。

df1:
  name  pos
0   n1    1
1   n2    2
2   n3    3 

df2:
  name  pos
0   n1    1
1   n3    2
2   n4    3 

  name  pos_x  pos_y
0   n1      1      1
1   n2      2      0
2   n3      3      2
3   n4      0      3

Desired Output:
  name  pos
0   n1    2
1   n2    2
2   n3    5
3   n4    3

df1およびではdf2pos列はインデックスによって構築されています。私はうるさいわけではありません。pos列はインデックスと同じである可能性があります。

pos各名前の最後の列でカウントを取得するよりコンパクトな方法を知っている人はいますか?

繰り返し計算する数十万のデータフレームをこのように合計する必要があります。pos列はそれぞれのパフォーマンスを表しますname

4

1 に答える 1