私はこのデータを持っています
import pandas as pd
data = {'Code': ['20','22','21','21','21','21','20','20','20','20'],
'Code2': ['1', '5', '2', '', '2', '2', '1', '', '1', '1']}
df = pd.DataFrame (data, columns = ['Code','Code2'])
Code Code2
0 20 1
1 22 5
2 21 2
3 21
4 21 2
5 21 2
6 20 1
7 20
8 20 1
9 20 1
Code2
以前の関連付けに基づいて、不足している値を埋めようとしています。したがって、Code
が20の場合Code2
は1であり、の場合Code
は21でCode2
あることがわかります。私の出力は次のようになります。
Code Code2
0 20 1
1 22 5
2 21 2
3 21 2
4 21 2
5 21 2
6 20 1
7 20 1
8 20 1
9 20 1
私はいくつかの結合を使用してそれを行うことができると考えましたが、可能であれば1つのライナーを使用することに熱心です。
使用drop_duplicates
とmap
:
data = {'Code': ['20','22','21','21','21','21','20','20','20','20'],
'Code2': ['1', '5', '2', '', '2', '2', '1', '', '1', '1']}
df = pd.DataFrame (data, columns = ['Code','Code2'])
m = df.drop_duplicates('Code').set_index('Code')['Code2']
df['Code2'] = df['Code'].map(m)
df
出力:
Code Code2
0 20 1
1 22 5
2 21 2
3 21 2
4 21 2
5 21 2
6 20 1
7 20 1
8 20 1
9 20 1
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加