複数のデータソースを統合しようとしていますが、私は列を簡潔に組み合わせるのが難しいと感じています。同じ値の複数列を集約するパンダ
df = pd.DataFrame([['Address Data','City data','State Data', 'Zip Data', np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan],
[ np.nan,np.nan,np.nan,np.nan,'Address Data','City data','State Data', 'Zip Data',np.nan,np.nan,np.nan,np.nan],
[ np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,'Address Data','City data','State Data', 'Zip Data']],
columns = ['Address1','City1','State1','Zip1','Address2','City2','State2','Zip2','Address3','City3','State3','Zip3'])
print df
Address1 City1 State1 Zip1 Address2 City2/
0 Address Data City Data State Data Zip Data NaN NaN
1 NaN NaN NaN NaN Address Data City Data
2 NaN NaN NaN NaN NaN NaN
State2 Zip2 Address3 City3 State3 Zip3
0 NaN NaN NaN NaN NaN NaN
1 State Data Zip Data NaN NaN NaN NaN
2 NaN NaN Address Data City Data State Data Zip Data
私はこのような何かに結合しようとしています:
#run code here to combine multiple versions of the columns
print df
Address City State Zip
0 Address Data City data State Data Zip Data
1 Address Data City data State Data Zip Data
2 Address Data City data State Data Zip Data
私は一度に複数の列を設定するには、このような行を使用することができます期待していた私は、このようになりますデータフレームを持っています:
df.loc[df['State1'].notnull(),['Address','city','state','State','Zip']] = df.loc[df['State1'].notnull(),['Address1','City1','State1','Zip1']].values
ただし、.locでは複数の列を同時に作成することはできません。データをどのように組み合わせるかについてのご意見は大変ありがとうございます。
編集
以下のソリューションに基づいて、その解決策の問題は、私のデータは、実際にはもっとこのように見えることがあります:この場合
df = pd.DataFrame([['Address Data','City data','State Data', 'Zip Data', 'Address Data','City data','State Data', 'Zip Data',np.nan,np.nan,np.nan,np.nan],
[ np.nan,np.nan,np.nan,np.nan,'Address Data','City data','State Data', 'Zip Data',np.nan,np.nan,np.nan,np.nan],
[ np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,'Address Data','City data','State Data', 'Zip Data']],
columns = ['Address1','City1','State1','Zip1','Address2','City2','State2','Zip2','Address3','City3','State3','Zip3'])
を、以下soltuionはとき、私の4行を与えます私は欲しいのは、「セクション1がデータを持っていればセクション1を使用し、セクション2がデータ使用セクション2を持っているならば、そうでなければセクション3がデータを持っているならセクション3を使う」と言いたい。私は統合していない行の多くの他の属性があるので、各行はユニークなままでなければなりません。ありがとう!
問題があると思う - エラーを実行すると:df [['g'、 'h']] = df.e.str.extract(r '([a-zA-Z] +)([0-9] +)'、expand = True)。また、上記のdf1.stack()。reset_index()をサンプルのdfで実行すると、何も変換されません。 – flyingmeatball
あなたのパンダのバージョンは何ですか? 'print pd.show_versions()' – jezrael
17.0 - 18にアップグレードします。 – flyingmeatball