質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

888閲覧

python:行選択した後に、列選択をして、その行列が合わさったところに数字(value)を挿入するやり方がわからない

takahashi-tiger

総合スコア17

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/03/20 01:07

編集2019/03/20 06:16

filei0![file01

ilei0 = pd.read_csv('sample.csv', index_col=0) file01 = pd.read_csv('faostat_sample.csv') for i in range(len(filei0)): irow = filei0.iloc[i] icountry = irow["Area"] iitem = irow["Item"] ielement = irow["Element"] ivalue = irow["Value"] iyear = irow["Year Code"] if [(file01["countries"] == icountry) & (file01["item"] == iitem) & (file01 ["element"] == ielement)]: [iyear] = ivalue file01.loc[i] file01.to_csv('sample_full.csv')

国名,element,item,yearが同じものをfileo1(二枚目の画像)の2001~の年に一枚目の画像のvalue値を挿入したいのですが、コードをどうつけ足せばいいかわかりません
行を選択したあとの書き出し方?がわからないのですがどのようなコードを書けばよいのでしょうか
python python3 pandas

補足ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

この質問ではファイルの一部を切り取っているのですが元の画像は1961年~2016年までfile01に表示が続きます。

わからないことは、
行選択した後に、列選択をして、その行列が合わさったところに数字(value)を挿入するやりかたです
(国名とか)  (year)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とりあえず、
DataFrame.pivot_table()を使って

Python

1filei0_pivot = filei0.pivot_table(index=['Area','Element Code', 'Element', 'Item Code','Item'], columns='Year Code', values='Value').reset_index() 2print(filei0_pivot)

等とすることで "Year Code"に対する"Value"値を列に展開することができますので、このDataFraemを挿入すると良いかと思います。

投稿2019/03/20 02:57

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takahashi-tiger

2019/03/20 06:15

回答ありがとうございました!その方法をおこないました。 行列展開はできたのですが、出来れば、filei0 の value値をfile01(二枚目)のほうに自動で挿入したもののcsvファイルを作成できるコードを目指しています。 二枚目のfile01は1961年~2016年まで欄があるのに対し、一枚目filei0のデータは年代が飛び飛びなので、行列転換した後手動での挿入だと時間がかかってしまうので、、(元データは3万行くらいあります) 二日ほどトライしてもできないのでお手数ですがなにかコメントいただけると嬉しいです
magichan

2019/03/20 07:37

filei0_pivotの Columnに対して全てのカラム名のリストを準備して、reindex() を行うことで解決できるかと思います。 new_columns = ['Area','Element Code', 'Element', 'Item Code','Item',1961,1962,1963,1964,...(省略)...,2015,2016] filei0_pivot = filei0_pivot.reindex(new_columns, axis=1)
takahashi-tiger

2019/03/20 08:11

なるほど!ありがとうございます。表示することが できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問