以下のCSVファイルを読み込むとします。
MAN,DATE,ITEM
A,2018/5/28,111
A,2018/5/28,222
A,2018/5/28,333
A,2018/5/28,444
B,2018/5/28,555
B,2018/5/28,666
C,2018/5/28,777
これを、リストで以下のように表現するにはどうすればよいでしょうか。
transactions = [
("111","222","333","444"),
("555","666"),
("777"),
]
今やっているのは、pandasでCSVファイルを読み込み、pivotを用いて横持ちへ変換するまではいきましたが、"nan"の処理ができずにいます。
現在は
transactions = [
("111","222","333","444"),
("555","666","nan","nan"),
("777","nan","nan","nan"),
]
の形まではできています。
上記のような「表現したいかたち」にするにはどうすればよいでしょうか。
もちろん私がやっていることそのものが間違っている事もあると思いますので、nanの削除にこだわってはおりません。
当方python3.5.3
pycharm2018.1
windows7
にてpythonをいじっております。
よろしくお願いいたします。
-------------------------以下pythonコード---------------------
import pandas as pd
import numpy as np
aa = pd.read_csv('aaa.csv', encoding="UTF-8", sep=',', dtype={'ITEM': 'str'}).sort_values(
['DATE']).reset_index(drop=True)
aa["tmpindex"] = aa.index
aa["itemindex"] = aa.tmpindex.apply(lambda x: "ITEM{}".format(str(x)))
df = pd.concat(
[
aa.pivot(index="MAN", columns="itemindex", values="ITEM")
],
axis=1)
df_after = np.array(df.apply(lambda s: pd.Series(s.dropna().tolist()), axis=1))
回答1件
あなたの回答
tips
プレビュー