本記事では、pandasを利用して列データを行方向へ連結する雛形コードを載せました。下図左が元データで、列名indexの値0,1,2を各グループとして、列名data1,data2,data3の値を行方向へ結合します。この時、重複する値がある場合はその行を削除して、ソートします。処理後の結果が下図右です。
■本プログラム
import pandas as pd
import numpy as np
def main():
df = pd.read_csv(input_file)
print(df)
df0 = df[~df.duplicated('index')]
print(df0)
print(df0.shape)
with open(out_file, 'w') as f:
f.write('index,data\n')
for i in range(df0.shape[0]):
df_list = []
for j in range(df0.shape[1]-1):
df_buf = df[(df['index'] == i)]
df_list.append(df_buf['data' + str(j+1)])
DF = pd.concat(df_list)
DF2 = DF[~DF.duplicated()]
DF_s = DF2.sort_values()
DF_np = DF_s.values
print(DF_np)
for k in DF_np:
f.write(str(i) + ',' + str(k) + '\n')
if __name__ == '__main__':
input_file = 'Book1.csv'
out_file = 'book.csv'
main()
print('finished')
以上
<広告>
リンク