DataFreamで複数の列が同じ場合に異なる列を操作groupbyとagg
2926 ワード
参考[python:ドキュメントの重複する行をマージする方法]
最近のデータプリプロセッシングではdataFreamに同じ列が複数あるのに1列または複数の列が異なることに遭遇し,同じ列が1行を特定できるように同じ列に基づいて異なる列をマージしようとしたが,最後にgoupbyパケットを用いてagg関数とlambdaを用いてこの問題を解決できることが分かったので,以下を記録する.具体的な質問は次のとおりです.
だからvidとtable_に基づいてid同じ行を結合してfield_resultsは、groupyとaggを使用して、参考文献に示されている解決策を探しました.具体的な操作は以下の通りです.
結果:
わずか数行でfield_resultsは同じ列をつなぎ合わせることによって、ここでは簡単な記録しかしません.具体的なagg関数とlambda式の使い方は、この2つの使い方を具体的に紹介する文章を参照することができます.
最近のデータプリプロセッシングではdataFreamに同じ列が複数あるのに1列または複数の列が異なることに遭遇し,同じ列が1行を特定できるように同じ列に基づいて異なる列をマージしようとしたが,最後にgoupbyパケットを用いてagg関数とlambdaを用いてこの問題を解決できることが分かったので,以下を記録する.具体的な質問は次のとおりです.
vt_count=data.groupby(['vid','table_id'],as_index=False).count()
vt_count[vt_count['field_results']>1].head()
'''
vid table_id field_results
1 000330ad1f424114719b7525f400660b 0102 3
147 000381f0069cbf7537e6aac8923034ae 0102 3
250 0003848ebd8d8163603760d53d975693 0101 3
251 0003848ebd8d8163603760d53d975693 0102 6
331 0003848ebd8d8163603760d53d975693 1308 2
'''
data[np.logical_and(data['vid']=='000330ad1f424114719b7525f400660b',data['table_id']=='0102')]
'''
vid table_id field_results
1439773 000330ad1f424114719b7525f400660b 0102 ( )
1439811 000330ad1f424114719b7525f400660b 0102 : 、
1439816 000330ad1f424114719b7525f400660b 0102 、 、 、 、 、
'''
## , vid, table_id
だからvidとtable_に基づいてid同じ行を結合してfield_resultsは、groupyとaggを使用して、参考文献に示されている解決策を探しました.具体的な操作は以下の通りです.
data=pd.concat([data1,data2])
data.to_csv("data.csv",index=False)
data=pd.read_csv("data.csv",header=None)
'''
data.head()
0 1 2
0 vid table_id field_results
1 002d1e4859fafd9ded2a2e1e7c839b62 2403 72.9
2 002d1e4859fafd9ded2a2e1e7c839b62 2404 166.5
3 002d1e4859fafd9ded2a2e1e7c839b62 2405 26.30
4 002d1e4859fafd9ded2a2e1e7c839b62 2420 79
'''
data=data.astype(str)
grouped = data.groupby([0,1])
result = grouped.agg(lambda x:'|'.join(x))
結果:
result.to_csv('result1.csv')
result=pd.read_csv('result1.csv')
result.columns=['vid','table_id','field_results']
'''
result.head()
vid table_id \
0 000330ad1f424114719b7525f400660b 0101
1 000330ad1f424114719b7525f400660b 0102
2 000330ad1f424114719b7525f400660b 0113
3 000330ad1f424114719b7525f400660b 0114
4 000330ad1f424114719b7525f400660b 0115
field_results
0 , , , , 。CDFI: ...
1 ( ) | : 、 ...
2 、 , , , 。
3 、 , , , 。
4 、 , , , 。
わずか数行でfield_resultsは同じ列をつなぎ合わせることによって、ここでは簡単な記録しかしません.具体的なagg関数とlambda式の使い方は、この2つの使い方を具体的に紹介する文章を参照することができます.