0
私は、2つのデータフレーム、ステーション、リザーバで分離された水力発電データを見ています。パンダデータフレームのリストに再帰的に追加
df_stations、df_reservoirs
Name Size Number R_Name R_Size R_number
A 20 1 W 200 2
B 30 2 X 300 4
C 30 3 Y 150 2
D 35 4 Z 100
列「番号」と、彼らは同じ番号を持っているとして、X 『のPowerStation 4に接続されている「R_numberは、両方のSAリザーバは、PowerStationの参照』。私はこれらのデータフレームを結合したいですいくつかの局が複数のリザーバを(一部は何を持っていない)を持っています。対応するデータが同じ行にある1、に、私は以下を示すためにしようとしたとして、これらのために、私は情報のリストを望む。
は
をdf_combined私が代わりにAPPENDを使用しようとしました。このコードは私にステーションBの数、これだけYが一致する最後の貯水池を与える(貧困層PEPのための私の謝罪)import pandas as pd
df_powerstations = pd.DataFrame([['A', 20,1],['B',30,2],['C',30,3],['D',35,4]], columns=['Name','Size','Number'])
df_reservoirs = pd.DataFrame([['W', 200, 2],['X', 300, 4],['Y',150,2],['Z',100, '']], columns=['R_name', 'R_size', 'R_Number'])
R_cols = df_reservoirs.columns.values.tolist()
df_combined = pd.concat([df_powerstations, pd.DataFrame(columns=R_cols)]) # type: pd.DataFrame
for ps_ind, ps_num in enumerate(df_combined['Number']):
for r_ind, r_ps_num in enumerate(df_reservoirs['R_Number']):
if ps_num == r_ps_num:
df_combined.loc[ps_ind, R_cols] = df_reservoirs.loc[r_ind, R_cols].copy()
最小限の作業例を私が開発した3210
しかし、これは私にエラーも結果も与えませんでした(私はもはやそのコードを持っています)。
リストを最初に作成し、次にデータフレームを作成するのが最善の解決策でしょうか?
'.agg(ラムダY。: '')(y.astype(STR)に参加)が使用して一つの方法だ' simplierですが、 ... – jezrael
ああ、ありがとう!それが私をさらに単純化しました。 – Zero
ありがとうございます!これは私の問題を解決し、私のコードをより速くしました。私はforループを使用すると、おそらく何か間違っていると言われてきました。どういうわけか、私の解決策は残っています。 – maypay