[解決済み] 2つのデータフレームをマージしようとすると、ValueErrorが発生します。
2022-05-15 04:11:43
質問
2つの変数に保存されている私の2つのデータフレームです。
> print(df.head())
>
club_name tr_jan tr_dec year
0 ADO Den Haag 1368 1422 2010
1 ADO Den Haag 1455 1477 2011
2 ADO Den Haag 1461 1443 2012
3 ADO Den Haag 1437 1383 2013
4 ADO Den Haag 1386 1422 2014
> print(rankingdf.head())
>
club_name ranking year
0 ADO Den Haag 12 2010
1 ADO Den Haag 13 2011
2 ADO Den Haag 11 2012
3 ADO Den Haag 14 2013
4 ADO Den Haag 17 2014
このコードを使って、この2つを結合しようとしています。
new_df = df.merge(ranking_df, on=['club_name', 'year'], how='left')
how='left'は、標準のdfよりもranking_dfの方がデータポイントが少ないので追加したものです。
期待される動作はこのようなものです。
> print(new_df.head())
>
club_name tr_jan tr_dec year ranking
0 ADO Den Haag 1368 1422 2010 12
1 ADO Den Haag 1455 1477 2011 13
2 ADO Den Haag 1461 1443 2012 11
3 ADO Den Haag 1437 1383 2013 14
4 ADO Den Haag 1386 1422 2014 17
でも、こんなエラーが出ます。
ValueErrorです。オブジェクトとint64カラムをマージしようとしています。もし pd.concat を使用してください。
しかし、私はツリーを追加するだけでなく、マージしたいので、concatは使用したくありません。
私の心の中で奇妙なもう一つの動作は、最初のdfを.csvに保存し、その.csvをデータフレームにロードすると、私のコードが動作することです。
そのためのコードです。
df = pd.DataFrame(data_points, columns=['club_name', 'tr_jan', 'tr_dec', 'year'])
df.to_csv('preliminary.csv')
df = pd.read_csv('preliminary.csv', index_col=0)
ranking_df = pd.DataFrame(rankings, columns=['club_name', 'ranking', 'year'])
new_df = df.merge(ranking_df, on=['club_name', 'year'], how='left')
私はそれがindex_col=0パラメータに関係していると思います。しかし、私はそれを保存することなく修正するアイデアがありません、それはあまり重要ではありませんが、私がそれをしなければならないのは一種の迷惑です。
どのように解決するのですか?
データフレームの一方では年は文字列で、もう一方ではint64です。
である場合、最初にそれを変換してから結合することができます (例.
df['year']=df['year'].astype(int)
またはRafaelCが提案したように
df.year.astype(int)
)
編集部:Anderson Zhu氏のコメントにも注目です。念のため、あなたが
None
がある場合、あるいはデータフレームのひとつに値がない場合は
Int64
の代わりに
int
. 参照
ここで
.
関連
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] 変数の値からpandas DataFrameを構築すると、「ValueError: すべてのスカラー値を使用する場合は、インデックスを渡す必要があります。"
-
[解決済み] データフレームのセルから値を取得するには?
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
-
[解決済み】インデックスで2つのデータフレームをマージする
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Pandasのjoinとmergeの違いは何ですか?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] Pythonでzip(*[iter(s)]*n)はどのように動作するのですか?
-
[解決済み] Pythonでnumpy.linalg.eigを使用した後の固有値と関連する固有ベクトルのソート
-
[解決済み] pathlib.Pathオブジェクトの絶対パスを取得するには?
-
[解決済み] Pythonを使ってすべてのASCII文字のリストを得るにはどうすればよいですか?
-
[解決済み] 2つのデータフレームをマージしようとすると、ValueErrorが発生します。
-
[解決済み] Pythonでファイルがバイナリ(非テキスト)かどうかを検出するにはどうしたらいいですか?
-
[解決済み] pandas DataFrameへのメタ情報/メタデータの追加
-
[解決済み] readonlyプロパティをmockでモックするには?