pythonのdataframeの結合方法について質問があります。
2つのdataframeがあり、片方の行をもう片方に挿入することがしたいです。
1行だけ挿入することは、出来たのですが複数行を一括で挿入することができません。
どこを修正すれば、理想的に動くでしょうか?
input
index | A | B | C |
---|---|---|---|
0 | for | one | 11 |
1 | bar | one | 12 |
2 | for | two | 13 |
index | D | E | F |
---|---|---|---|
0 | a | 101 | 16:00 |
1 | b | 102 | 9:00 |
2 | c | 103 | 12:00 |
3 | d | 104 | 21:00 |
output
1行挿入 (想定通り)
|index|A|B|C|D|E|F|
|:--|:--:|--:|--:|
|0|for|one|11|
|1|bar|one|12|c|103|12:00|
|2|for|two|13|
理想
|index|A|B|C|D|E|F|
|:--|:--:|--:|--:|
|0|for|one|11|
|1|bar|one|12|c|103|12:00|
|1||||d|104|21:00|
|2|for|two|13|
python
1#!/usr/bin/python3 2# -*- Coding: utf-8 -*- 3 4import pandas as pd 5 6 7# 2つのDFを結合、inputDF2のtarget_row行をinputDF1のinsert_row行に挿入する。 8def insert_data_frame(inputDF1, inputDF2, insert_row, target_row): 9 insert_data = pd.DataFrame([eval("inputDF2.iloc[{}]".format(target_row))], index=[insert_row]) 10 output_df = insert_data.combine_first(inputDF1) 11 12 return output_df 13 14 15def main(): 16 # 適当なDFを作成 17 df1 = pd.DataFrame({"A": ['foo', 'bar', 'foo'], 18 "B": ['one', 'one', 'two'], 19 "C": range(11, 14) 20 }) 21 22 df2 = pd.DataFrame({"D": ['a', 'b', 'c', 'd'], 23 "E": range(101, 105), 24 "F": ['16:00', '09:00', '12:00', '21:00'] 25 }) 26 27 # insert_df = insert_data_frame(df1, df2, 1, "2") # 想定通り動作 28 insert_df = insert_data_frame(df1, df2, 1, "2:3") # 想定外の動作をする 29 insert_df.to_csv("test.csv") 30 print(insert_df) 31 32 33if __name__ == '__main__': 34 main() 35 36 37
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/08 12:39