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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python 3.x

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

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

2回答

1487閲覧

(Python)(Powershell) csvファイルから特定列の数値変換と、特定列以降のデータを削除したい

Tsubasa123

総合スコア1

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python 3.x

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

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2021/06/24 09:47

前提・実現したいこと

csvファイルから、PythonまたはPowerShellを使って、特定列の数値変換と特定列以降のデータを削除したいのですが、経験不足のため、どうすれば実現できるのか悩んでいます。
どのように導くのが良いのでしょうか。

編集前ファイル

before.csv

項番,地点,距離,備考1,備考2,備考3,備考4
01,A to B,0003052,aaa,bbb,ccc,ddd
02,B to C,0012034,eee,fff,ggg,hhh

編集後ファイル

after.csv

項番,地点,距離,備考1
01,A to B,3,aaa
02,B to C,12,eee

試したいこと

備考2以降の列を削除する。

距離の数値変換をする。
(元ファイルは7桁(整数4桁と小数点以下の3桁の組合せ)となっています。この距離を先頭4桁の整数のみに変換できたらと検討しています。

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

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

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

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

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

guest

回答2

0

python

1# csv準備 2before="""項番,地点,距離,備考1,備考2,備考3,備考4 301,A to B,0003052,aaa,bbb,ccc,ddd 402,B to C,0012034,eee,fff,ggg,hhh""" 5 6import pandas as pd 7import io 8 9df = pd.read_csv(io.StringIO(before), dtype='str') 10 11df.to_csv('before.csv',index=False) 12 13# !cat before.csv 14# 15# 項番,地点,距離,備考1,備考2,備考3,備考4 16# 01,A to B,0003052,aaa,bbb,ccc,ddd 17# 02,B to C,0012034,eee,fff,ggg,hhh 18 19# csv読み込み 20df = pd.read_csv('before.csv',dtype='str') 21# データフレームを所用の箇所で切り出し、距離を四桁取り出して数値に変換 22dfs=df.iloc[:,:4].assign( 23 距離=df["距離"].str.slice(stop=4).astype('int') 24) 25# csv書き込み 26dfs.to_csv('after.csv',index=False) 27 28# !cat after.csv 29# 30# 項番,地点,距離,備考1 31# 01,A to B,3,aaa 32# 02,B to C,12,eee

Colaboratoryで実施しました。

pandasのデータフレームで処理するのが簡単だと思います。

参考:

投稿2021/06/24 10:36

toshikawa

総合スコア388

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

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

Tsubasa123

2021/06/25 06:26 編集

ご多忙のところ、詳しいコーディングでご教授いただきありがとうございました。csv読み込みから変換・編集、書き込みまでのコーディング例に、とてもいい学習になりました。今後の作成時にぜひ参考にさせていただきます。 また、コーディングを参考にしてたら、今回質問した距離を何らかの(整数・小数が混在した)指示値とした場合に、指示値の整数値がバラバラな時とかはどうすれば実現できるのだろう、日付が入っていない場合やファイル分割したい時にはどうしたらいいのだろうと興味が出てきたので、追加で別の質問をさせていただくことにしました。 もしお時間等許せるようでしたら、ぜひ教えていただければと思っています。よろしくお願いいたします。
guest

0

ベストアンサー

以下でできます。

python

1import pandas as pd 2 3df = pd.read_csv('before.csv', usecols=[0, 1, 2, 3], dtype={'項番': str}) 4 5print(df) 6df['距離'] = df['距離'] //1000 7 8print(df) 9 10df.to_csv('after.csv', index=False)

before.csv は、

import os
print(os.getcwd())

で表示される場所においてください。

投稿2021/06/24 10:15

ppaul

総合スコア24670

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

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

Tsubasa123

2021/06/25 06:26

ご多忙のところ、分かりやすくご教授いただきありがとうございました。Pythonの場合だと、他のネット上でもたびたび見かけましたが、pandasインストールしての使用が便利のようですね。今後の作成時にぜひ参考にさせていただきます。 ただ、恥ずかしながら、確かに、距離の変換は1000で割ってれば良かったですね。 また、コーディングを参考にしてたら、今回質問した距離を何らかの(整数・小数が混在した)指示値とした場合に、指示値の整数値がバラバラな時とかはどうすれば表現できるのだろう、日付が入っていない場合やファイル分割したい時にはどうしたらいいのだろうと興味が出てきたので、追加で別の質問をさせていただくことにしました。 もしお時間等許せるようでしたら、ぜひ教えていただければと思っています。よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問