[解決済み】イテラブルで設定する場合、キーと値のlenが等しくなければならない
質問
以下のような2つのデータフレームがあります。
leader:
0 11
1 8
2 5
3 9
4 8
5 6
[6065 rows x 2 columns]
DatasetLabel:
Unnamed: 0 0 1 .... 7 8 9 10 11 12
0 A J .... 1 2 5 NaN NaN NaN
1 B K .... 3 4 NaN NaN NaN NaN
[4095 rows x 14 columns]
情報データセットのカラム名0〜6はデータに関するDatasetLabel、7〜12はリーダーデータフレームの最初のカラムを参照するインデックスである。
DatasetLabel Dataset のインデックスの代わりに、リーダーデータセットの各インデックスの値を持つデータセットを作りたいのですが、それは次のようなものです。
leader.iloc[index,1]
pythonの機能を使ってどうすればいいのでしょうか?
のように出力されるはずです。
DatasetLabel:
Unnamed: 0 0 1 .... 7 8 9 10 11 12
0 A J .... 8 5 6 NaN NaN NaN
1 B K .... 9 8 NaN NaN NaN NaN
を思いついたのですが、エラーが出ます。
for column in DatasetLabel.ix[:,8:13]:
DatasetLabel[DatasetLabel[column].notnull ()]=leader.iloc[DatasetLabel[DatasetLabel[column].notnull ()][column].values,1]
エラーです。
ValueError: Must have equal len keys and value when setting with an iterable
解決方法は?
を使用することができます。
apply
へのインデックスを作成するために
leader
と値を交換します。
DatasetLabel
あまりきれいではありませんが。
一つ問題なのは、Pandasがインデックスを作成する際に
NaN
. に変換すると
str
は回避策を提供します。 しかし、これによって2つ目の問題が発生します。すなわち、カラム
9
は、型が
float
(なぜなら
NaN
は
float
)なので
5
は次のようになります。
5.0
. 文字列になった時点で、それは
"5.0"
のインデックス値とのマッチングに失敗します。
leader
. を削除することができます。
.0
しかし、これは少しハックする必要があります。
とは
DatasetLabel
としています。
Unnamed:0 0 1 7 8 9 10 11 12
0 0 A J 1 2 5.0 NaN NaN NaN
1 1 B K 3 4 NaN NaN NaN NaN
そして
leader
としています。
0 1
0 0 11
1 1 8
2 2 5
3 3 9
4 4 8
5 5 6
次に
cols = ["7","8","9","10","11","12"]
updated = DatasetLabel[cols].apply(
lambda x: leader.loc[x.astype(str).str.split(".").str[0], 1].values, axis=1)
updated
7 8 9 10 11 12
0 8.0 5.0 6.0 NaN NaN NaN
1 9.0 8.0 NaN NaN NaN NaN
これで
concat
変更されていないカラム (ここでは
original
を使用します。
updated
:
original_cols = DatasetLabel.columns[~DatasetLabel.columns.isin(cols)]
original = DatasetLabel[original_cols]
pd.concat([original, updated], axis=1)
出力します。
Unnamed:0 0 1 7 8 9 10 11 12
0 0 A J 8.0 5.0 6.0 NaN NaN NaN
1 1 B K 9.0 8.0 NaN NaN NaN NaN
注:この場合
concat
をマージする方法があります。
original
と
updated
を使用しています。
assign
:
DatasetLabel.assign(**updated)
関連
-
Python カメの描画コマンドとその例
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
Python 入出力と高次代入の基礎知識
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] データフレームをピボットするにはどうしたらいいですか?
-
[解決済み] ValueError: cannot reindex from a duplicate axis`とはどういう意味ですか?
-
[解決済み] groupbyでグループ内の最大値を持つ行を取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python implement mysql add delete check change サンプルコード
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み] データ型が理解できない
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)