2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python 二次元配列の操作方法

Last updated at Posted at 2023-10-02

はじめに

プログラミング初心者です。
Pythonで、二次元配列を操作するときに調べたものを忘れないように自分用にまとめました。
二次元配列だけでなく、初歩的な内容も含まれています。

空文字の判定と、文字列の数字を数値に変換する

data = [[ "a", "", "c"],
        [ "", "1", "f"],
        [ "g", "2", "i"]]

for i in range(len(data)):
    if bool(data[i][1]):
        print(int(data[i][1]))
    else:
        print("空文字")
# 空文字  ""は空文字
# 1  "1"が 1 に変換
# 2  "2"が 2 に変換
  • bool("〇〇")で〇〇が文字列(または数値)の時はtrue、空文字の時はfalseが返る
  • int("123")"123"を数値123に変換する
  • str(123)123を文字列"123"に変換する
  • len(〇〇)で〇〇の長さを返す
print(len("abcde"))
# 5 文字列の長さを返す
print(len(data))
# 3  二次元配列の行数を返す
print(len(123))
# エラー 数値はエラーになる
  • 二次元配列のループで行の繰り返し変数=index(行番号)にしたいときは
    for i in range(len(data)):とすると iの数=行番号として使える
  • for i in range(△):だと△回繰り返しできる

二次元配列の末尾にリストを追加する

data = [[ "a", "", "c"],
        [ "", "1", "f"],
        [ "g", "2", "i"]]

data.append([ "j", "k", "l"])
print(data)

# [[ "a", "", "c"],
#  [ "", "1", "f"],
#  [ "g", "2", "i"],
#  [ "j", "k", "l"]]
  • data.append(リスト)で二次元配列の末尾にリストを追加する

二次元配列をフィルターする

data1 = [[ "太郎", "りんご", "3個"],
        [ "次郎", "みかん", "5個"],
        [ "三郎", "いちご", "10個"]]

list1 = list(filter(lambda x: x[0]=="太郎", data1))
print(list1) 

# [['太郎', 'りんご', '3個']]
  • list(filter(lambda x: x[0]=="太郎", data1))でフィルターできる
    x[0]の数字が列の位置 "太郎"が条件 data1が二次元配列

【応用】二次元配列のループの中で別の二次元配列をフィルターする

data1 = [[ "太郎", "りんご", "3個"],
        [ "次郎", "みかん", "5個"],
        [ "三郎", "いちご", "10個"]]

data2 = [[ "みかん", "愛媛県"],
        [ "りんご", "青森県"],
        [ "すいか", "熊本県"]]

for i in range(len(data1)):
    list1 = list(filter(lambda x: x[0] == data1[i][1], data2))
    if len(list1) > 0:
        print(list1[0][1])

    else:
        print("該当なし") 

# 青森県 data2をりんごでフィルターした時の都道府県
# 愛媛県 data2をみかんでフィルターした時の都道府県
# 該当なし data2をいちごでフィルターした時の都道府県(存在しない)
  • len(list(filter(lambda x: x[0] == data1[i][1], data2)))でフィルターした二次元配列の長さを返す

CSVの処理

CSVの読込

import pandas as pd
data3 = pd.read_csv("〇〇〇〇〇.csv", encoding = "utf_8",
                   na_filter=False, usecols=[1, 2, 3, 5]).values.tolist()
  • pandasを使用する
  • pd.read_csv("〇〇〇〇〇.csv").values.tolist()でCSVを読み込める
  • encoding = "utf_8"でエンコードを指定できる
  • na_filter=Falseでnull値を空文字""に変換して読み込むことができる
  • usecols=[1, 2, 3, 5]で読み込む列を指定できる

CSVに書込

import csv
with open("〇〇〇〇〇.csv", "w", newline="", encoding = "utf_8") as f:
    writer = csv.writer(f)
    writer.writerows(data3)
  • encoding = "utf_8"でエンコードを指定できる
  • "w"で上書き、"a"で既存のファイルに追記できる

おわりに

どの言語でも使用する二次元配列の操作で、主に自分がよく使いそうなものを中心にまとめました。
また、null値、空文字、数字(数値)、文字列がごちゃ混ぜになっている二次元配列を操作する可能性を考えて、Pythonでのnullや空文字の判定方法についても調査しました。

参考サイト

2
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?