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

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

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

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

488閲覧

python dataframeの各行に応じて複数の列情報を追加したい

john_doe_

総合スコア354

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2019/10/29 01:24

編集2019/10/29 03:51

pythonのcsvファイルの加工方法についてのご質問になります。
ファイルAの情報をファイルBに追加したいと考えています。

csvファイルA

会社名名前
A社日本太郎
A社日本花子
A社日本花男
B社東京太郎
C社千葉太郎
C社千葉花子
E社横浜太郎
F社茨城花子

各社の担当者名を下記のフレームに加筆したいと考えています。
担当者が1名の場合や複数いる場合があるため、列を予め追加しました。

csvファイルB
|会社名|担当者1|担当者2|担当者3|
|:--|:--:|--:|
|A社|||
B社|
C社
D社
E社
F社

完成イメージ
|会社名|担当者1|担当者2|担当者3
|:--|:--:|--:|
A社|日本太郎|日本花子|日本花男
B社|東京太郎
C社|千葉太郎|千葉花子
D社|
E社|横浜太郎|
F社|茨城花子|

担当者が複数いる、またいない場合もあるため、単純にペーストはできずにおり、
解決方法についてご教示いただけましたら幸甚と存じます。
ご説明が不十分な点もあるかもしれませんが、何卒よろしくお願い申し上げます。

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

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

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

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

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

t_obara

2019/10/29 02:29

想定する入力と、期待する出力例をご提示いただくと適切な回答を得られやすいかと思われます。
john_doe_

2019/10/29 05:23

ご指摘ありがとうございます。加筆・修正いたしました。
meg_

2019/10/29 11:08

・担当者は最大で3人なのですか? ・出来たところまでのコードを載せた方が回答がつきやすくなるかと思います。
guest

回答2

0

名前のないD社の行の追加方法はわからないのですができましたので投稿します

python

1import io 2import pandas as pd 3 4data = """\ 5会社名,名前 6A社,日本太郎 7A社,日本花子 8A社,日本花男 9B社,東京太郎 10C社,千葉太郎 11C社,千葉花子 12E社,横浜太郎 13F社,茨城花子 14""" 15 16df_csv = pd.read_csv(io.StringIO(data)) 17 18# 会社名でグループ化 19df_groups = df_csv.groupby("会社名") 20 21# 会社名別の担当者リスト作成 22result = {label: df_data["名前"].tolist() for label, df_data in df_groups} 23 24df = pd.DataFrame.from_dict(result, orient="index") 25 26# 列名を担当者番号に変更 27df.columns = [f"担当者{i}" for i in range(1, len(df.columns) + 1)] 28 29df.to_csv("result.csv")

追記

Pnadasによる縦持ち⇒横持ちデータ構造変換
https://teratail.com/questions/186398

python

1df = df_csv.groupby(["会社名"]).apply(lambda d: d['名前'].reset_index(drop=True)).unstack() 2df = df.rename(columns={i:'担当者{:02d}'.format(i+1) for i in range(10)}) 3df

投稿2019/11/01 00:23

編集2019/11/01 01:53
barobaro

総合スコア1286

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

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

john_doe_

2019/11/01 04:28

縦持ちと横持ちデータについてご教示いただきましてありがとうございます。 大変参考になりました。
guest

0

自己解決

無理なようなので諦めます!!

投稿2019/10/31 22:23

john_doe_

総合スコア354

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問