1つの列だけが異なる3つのデータフレームがあります。以下に示すように、平均、標準偏差、およびカウントがリストされています。
表1
Name Treatment Pool_mean
ATP 1Week 100
ATP 4Week 500
ATP 16Weeks 1500
GTP 4Week 1000
GTP 1Week 250
GTP 16Weeks 12000
表2
Name Treatment Pool_std
ATP 1Week 2
ATP 4Week 5
ATP 16Weeks 15
GTP 4Week 7
GTP 1Week 2
GTP 16Weeks 30
表3
Name Treatment Pool_count
ATP 1Week 3
ATP 4Week 5
ATP 16Weeks 4
GTP 4Week 5
GTP 1Week 3
GTP 16Weeks 4
次のようなテーブルを取得する必要があります。
1Week 1Week 1Week 4Weeks 4Weeks 4Weeks 16Weeks 16Weeks 16 Weeks
pool_mean pool_std pool_count pool_mean pool_std pool_count pool_mean pool_std pool_count
Name ATP 100 2 3 500 5 5 1500 15 4
Name GTP 250 2 3 1000 7 5 12000 30 4
どうしたらいいのかわからない。私はこのコードを書くところまで行きました:
df1 = pd.DataFrame(averages)
df2 = pd.DataFrame(stddev)
df3 = pd.DataFrame(count)
dfs = [df1, df2, df3]
dfs1 = pd.concat(dfs, axis=1).T.drop_duplicates().T
print(dfs1)
dfs1.to_csv('pool_merged.csv')
しかし、それは私の列を1つのかなりフラットなファイルに入れることになります。これは素晴らしいですが、私が必要とするものではありません。私はこの時点で本当に迷っています(私はこれに非常に慣れていません)。
どんな助けでもありがたいです。
set indexとunstackを組み合わせてから、natsortを使用してswaplevelとsortindexを使用する以下のソリューションを試すことができます。
import natsort as ns
dfs = [df1,df2,df3]
out = (pd.concat([i.set_index(['Name','Treatment']).unstack() for i in dfs],axis=1)
.swaplevel(axis=1))
out = out.reindex(columns=ns.natsorted(out.columns.get_level_values(0).unique()),level=0)
print(out)
Treatment 1Week 4Week \
Pool_mean Pool_std Pool_count Pool_mean Pool_std Pool_count
Name
ATP 100 2 3 500 5 5
GTP 250 2 3 1000 7 5
Treatment 16Weeks
Pool_mean Pool_std Pool_count
Name
ATP 1500 15 4
GTP 12000 30 4
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加