1
を持っている場合、私は2つのデータフレームがあると、二番目の第1データフレームの列を割り当てる:データフレームは異なるサイズを
df1 = pd.DataFrame(np.arange(0,301),columns = ['id'])
df2 = pd.DataFrame(np.arange(200,387),columns = ['id'])
df1['2'] = np.random.randint(0,2,301)
df2['2'] = np.random.randint(0,2,187)
そしてIは第一と第二のデータフレームからIDを一致させ、第三のDFを作成する:
temp = df2.loc[df2['id'].isin(df1['id'])]
それから私はいくつかの値を計算します。
def values_14(row):
if row['2'] == 1:
return 1
else:
return 0
temp['val'] = temp.apply(lambda row: values_14(row),axis = 1)
私の質問は:私はから値を割り当てることができますか最初のデータフレームのデータフレームtemp
の列val
(最初のデータフレームのid
がid
のtemp
に一致しない場合は、NAを割り当てます)一般?一般的には、たとえば、id
列が名前であり、数値のようにソートされていない状況を意味します。パンダでどうすればいいですか?
私はカップルの質問をしてみましょう: 1)val_df = temp.loc [TEMP [ 'ID'] ==行[ 'ID' ]]この行は([True] False)行['id']とtemp ['id']のすべての値を同時に比較しますか? 2)df1.loc [index、 'val'] = val_df ['val']。values [0] RHSから値[0]をコード化する必要がある理由をここで説明してください。 –
@Mat_nekras '1)' yesの場合、比較後に 'TrueまたはFalse'を返します。 '.values'は' ndarray'と '.values [0]'に変更し、配列から最初の要素を選びます。他の選択肢や効率的な方法もあります。 – 0p3n5ourcE
ちょうど1つの問題が表示されます。id値がスティングの場合、コードは機能しません。インデックスは整数でもスライスでも文字列ではないはずです –