wellwell3176
@wellwell3176

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

pandas dataframeをdataframeの定義式の形で出力したい

解決したいこと

下記のdf2からdf1のdata=[]の部分を作成したい。

dataframeの定義式
df1 = pd.DataFrame(
    data=[{'総額': 2000, '食費': 2000,'光熱費': 0,'水道費': 0,},
          {'総額': 1000, '食費': 0,'光熱費': 1000,'水道費': 0,},
          {'総額': 1500, '食費': 0,'光熱費': 0,'水道費': 1500,}])

qiitaの記事を書く際に、上記df1のようにdataframeの情報を掲載したいのですが、
実際の私の環境ではエクセルデータを取り込んでいます

実環境でやっていること
df2 pd.read_excel("/data.xlsx")
print(df2)

     総額    食費   光熱費   水道費
0  2000  2000     0     0
1  1000     0  1000     0
2  1500     0     0  1500

これまでの記事ではデータが少なかったので手打ちしてましたが、ちょっと配列が大きくなりそうなので作業を楽にしたいです。
df2からdf1のdata=[]の部分を生成したいのですが、何か手段はありますでしょうか?

自分で試したこと

>>>df2.values

[[2000 2000    0    0]
 [1000    0 1000    0]
 [1500    0    0 1500]]

valuesで値を行列として取り出すことはできたものの、columnの情報が消えるし、ここからdf1の形に整形できなかった。
また、カンマなどもないので流用時にエラーが出る。

0

1Answer

df1が再生成できれば良いものとして、辞書形式ではダメでしょうか?
下記のコードで、df2は、df1と同等になります。

import pandas as pd

df1 = pd.DataFrame(
    data=[{'総額': 2000, '食費': 2000,'光熱費': 0,'水道費': 0,},
          {'総額': 1000, '食費': 0,'光熱費': 1000,'水道費': 0,},
          {'総額': 1500, '食費': 0,'光熱費': 0,'水道費': 1500,}])
dc1 = df1.to_dict()
df2 = pd.DataFrame(dc1)
dc1
{'総額': {0: 2000, 1: 1000, 2: 1500},
 '食費': {0: 2000, 1: 0, 2: 0},
 '光熱費': {0: 0, 1: 1000, 2: 0},
 '水道費': {0: 0, 1: 0, 2: 1500}}
1Like

Comments

  1. @wellwell3176

    Questioner

    できました!
    変換予定のdataframeはnp.nanが混ざっていましたがreplace(np.nan,"")を入れて解決です。
    どうもありがとうございました。

Your answer might help someone💌