CSV形式のレポートを解析するために、特定の文字('発生現象')を含む列のみを抽出したいです。
以下の「CSVデータ例」のように'発生現象'がカラムBとカラムEにのみ含まれると事前にわかっている場合は、
df = df.filter(items=['B','E'])
とすることでやりたいことができたのですが、特定の文字がどこの列に含まれるのか分からない場合にはどうやれば良いのか、教えていただけないでしょうか?
CSVデータ例
||A|B|C|D|E|F|
|:--|:--:|--:|
|1|回答者|発生現象||回答者|発生現象
|2|佐々木|XXX||高橋|YYY|
|3|||
|4|回答者|発生現象||回答者|発生現象
|5|山田|ZZZ||鈴木|JJJ
やりたいこと
A | B | |
---|---|---|
1 | 発生現象 | 発生現象 |
2 | XXX | YYY |
3 | ||
4 | 発生現象 | 発生現象 |
5 | ZZZ | JJJ |
1つ1つの列に対してその文字列が含まれているか調べれば良いかと思いますが、具体的にはどこが分からないのでしょうか?
そもそも、このデータはcsvではないし、そのままDataFrameに突っ込んで操作するのは筋が悪いです。
また、答えるにあたって、データの形式がほとんどわからないので考えようがありません。
- もとのテキストデータはどのような形式になっていますか? 質問のような形式ですか?
- ヘッダ行の繰り返し数はどうなっていますか?「回答者、発生現象」がいくつ続きますか?
- ヘッダ行の下にデータ行は何行続きますか?
- 複数あるヘッダ行にある「発生現象」の場所は同一ですか?
>meg_さん
ご指摘を受け1つ1つの列に対して処理できないか考えてみたところ、やりたかったことができました。ありがとうございます。
>TakaiYさん
不十分な情報での質問をしてしまいすみません。
元々はウェブブラウザで見ることができるレポートをコピー&ペーストしてCSVデータにすると質問に書いたような形式になります。'発生現象'の列だけを抽出したかったため、なんとなくCSVを使っていたのですが、王道のやり方がありましたら教えていただけないでしょうか?
「回答者、発生現象」は列方向には2つだけ続き、行方向は200行続きますが、汎用性があるように作りたいと思っていました。
また、発生現象の場所は同一です。
回答1件
あなたの回答
tips
プレビュー