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

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

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

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

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

pandas

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

Q&A

解決済

1回答

9159閲覧

pandasのdataframeをstring型へ変換して抽出したい

mmorita

総合スコア21

Python 3.x

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

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

pandas

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

0グッド

0クリップ

投稿2018/11/08 09:55

前提・実現したいこと

python3において、csvをpandasで取り込み特定の列を抽出するに当たって、これをstring型にしたいのですが、私がやった場合最初に0の数字が入ってしまっているので困っています。

※ソースコードはjupyter-notebook上の出力です。

発生している問題・エラーメッセージ

エラーコードが発生しているわけではありません。

該当のソースコード

python3

1df = pd.read_csv('csvfile.csv') 2dg = df['row'] 3dgstr = str(dg) 4dgstr 5 6'0 200650\n1 200644\n2 200632\n3 200621\n4 200658\n5 200648\n6 200655\n7 200645\n8 200635\n9 200613\n10 200612\n11 200647\n12 200649\n13 200638\n14 200630\n15 200620\n16 200628\n17 200651\n18 200639\n19 200631\n20 200614\n21 200611\n22 200625\n23 200624\n24 200652\n25 200640\n26 200629\n27 200619\n28 200610\n29 200622\n30 200623\n31 200627\n32 200654\n33 200642\n34 200634\n35 200615\n36 200609\n37 200656\n38 200646\n39 200636\n40 200616\n41 200608\n42 200626\n43 200653\n44 200641\n45 200633\n46 200617\n47 200607\n48 200657\n49 200643\n50 200637\n51 200618\n52 200606\nName: a, dtype: int64'

試したこと

print(dgstr)を行うと、200650から出力されていいのですが、抽出した数字をsubprocessに反映する際に0を読み取ってしまい、うまく行きません。
例えばdgstrの数字に対応するtxtファイルを別のディレクトリにコピーする場合を考えると次の通りです。

for i in dgstr : subprocess.call("cp", + i +,".txt ../") (実行結果) FileNotFoundError: No such file or directory: 'cp 0.txt ../'

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

最初に0の数字が入ってしまっているので困っています。

print(dg)と同じ結果、すなわち0などのインデックス番号やName: row~なども含まれてしまっています。
"200650 200644 ~"のような文字列を作成するにはリストに変換後、空白文字で連結してやればよいです。

例えばdgstrの数字に対応するtxtファイルを別のディレクトリにコピーする場合を考えると

上記のリストをforループで処理してやればよいです。

Python

1import pandas as pd 2df = pd.DataFrame({'row':[200650,200644,200632]}) 3dg = df['row'] 4print(str(dg)) 5""" 60 200650 71 200644 82 200632 9Name: row, dtype: int64 10""" 11 12dglst = dg.astype(str).tolist() # 文字列のリストに変換 13dgstr = ' '.join(dglst) # 空白文字で結合 14print(dgstr) # 200650 200644 200632 15 16# forループ 17for i in dglst: 18 print(i)

投稿2018/11/08 10:45

can110

総合スコア38264

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

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

mmorita

2018/11/08 11:47

ご回答の通りに実行したらうまく行きました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問