pandas
DataFramesの簡単な操作
サーチ…
DataFrameの列を削除する
DataFrameの列を削除するには、いくつかの方法があります。
import numpy as np
import pandas as pd
np.random.seed(0)
pd.DataFrame(np.random.randn(5, 6), columns=list('ABCDEF'))
print(df)
# Output:
# A B C D E F
# 0 -0.895467 0.386902 -0.510805 -1.180632 -0.028182 0.428332
# 1 0.066517 0.302472 -0.634322 -0.362741 -0.672460 -0.359553
# 2 -0.813146 -1.726283 0.177426 -0.401781 -1.630198 0.462782
# 3 -0.907298 0.051945 0.729091 0.128983 1.139401 -1.234826
# 4 0.402342 -0.684810 -0.870797 -0.578850 -0.311553 0.056165
1) del
を使用する
del df['C']
print(df)
# Output:
# A B D E F
# 0 -0.895467 0.386902 -1.180632 -0.028182 0.428332
# 1 0.066517 0.302472 -0.362741 -0.672460 -0.359553
# 2 -0.813146 -1.726283 -0.401781 -1.630198 0.462782
# 3 -0.907298 0.051945 0.128983 1.139401 -1.234826
# 4 0.402342 -0.684810 -0.578850 -0.311553 0.056165
2) drop
を使う
df.drop(['B', 'E'], axis='columns', inplace=True)
# or df = df.drop(['B', 'E'], axis=1) without the option inplace=True
print(df)
# Output:
# A D F
# 0 -0.895467 -1.180632 0.428332
# 1 0.066517 -0.362741 -0.359553
# 2 -0.813146 -0.401781 0.462782
# 3 -0.907298 0.128983 -1.234826
# 4 0.402342 -0.578850 0.056165
3)列番号付きdrop
を使用drop
名前の代わりに列の整数を使うには(列のインデックスがゼロから始まることに注意してください):
df.drop(df.columns[[0, 2]], axis='columns')
print(df)
# Output:
# D
# 0 -1.180632
# 1 -0.362741
# 2 -0.401781
# 3 0.128983
# 4 -0.578850
列の名前を変更する
df = pd.DataFrame({'old_name_1': [1, 2, 3], 'old_name_2': [5, 6, 7]})
print(df)
# Output:
# old_name_1 old_name_2
# 0 1 5
# 1 2 6
# 2 3 7
1つまたは複数の列の名前を変更するには、古い名前と新しい名前を辞書として渡します。
df.rename(columns={'old_name_1': 'new_name_1', 'old_name_2': 'new_name_2'}, inplace=True)
print(df)
# Output:
# new_name_1 new_name_2
# 0 1 5
# 1 2 6
# 2 3 7
または関数:
df.rename(columns=lambda x: x.replace('old_', '_new'), inplace=True)
print(df)
# Output:
# new_name_1 new_name_2
# 0 1 5
# 1 2 6
# 2 3 7
df.columns
を新しい名前のリストとして設定することもできます。
df.columns = ['new_name_1','new_name_2']
print(df)
# Output:
# new_name_1 new_name_2
# 0 1 5
# 1 2 6
# 2 3 7
詳細はこちらをご覧ください 。
新しい列を追加する
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
print(df)
# Output:
# A B
# 0 1 4
# 1 2 5
# 2 3 6
直接割り当て
df['C'] = [7, 8, 9]
print(df)
# Output:
# A B C
# 0 1 4 7
# 1 2 5 8
# 2 3 6 9
定数カラムを追加する
df['C'] = 1
print(df)
# Output:
# A B C
# 0 1 4 1
# 1 2 5 1
# 2 3 6 1
他の列の式としての列
df['C'] = df['A'] + df['B']
# print(df)
# Output:
# A B C
# 0 1 4 5
# 1 2 5 7
# 2 3 6 9
df['C'] = df['A']**df['B']
print(df)
# Output:
# A B C
# 0 1 4 1
# 1 2 5 32
# 2 3 6 729
操作はコンポーネント単位で計算されるため、リストとして列を使用する場合
a = [1, 2, 3]
b = [4, 5, 6]
最後の式の列は次のように取得されます。
c = [x**y for (x,y) in zip(a,b)]
print(c)
# Output:
# [1, 32, 729]
それを即座に作成する
df_means = df.assign(D=[10, 20, 30]).mean()
print(df_means)
# Output:
# A 2.0
# B 5.0
# C 7.0
# D 20.0 # adds a new column D before taking the mean
# dtype: float64
複数の列を追加する
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df[['A2','B2']] = np.square(df)
print(df)
# Output:
# A B A2 B2
# 0 1 4 1 16
# 1 2 5 4 25
# 2 3 6 9 36
オンザフライで複数の列を追加する
new_df = df.assign(A3=df.A*df.A2, B3=5*df.B)
print(new_df)
# Output:
# A B A2 B2 A3 B3
# 0 1 4 1 16 1 20
# 1 2 5 4 25 8 25
# 2 3 6 9 36 27 30
列内のデータの検索と置換
import pandas as pd
df = pd.DataFrame({'gender': ["male", "female","female"],
'id': [1, 2, 3] })
>>> df
gender id
0 male 1
1 female 2
2 female 3
男性を0にエンコードし、女性を1:
df.loc[df["gender"] == "male","gender"] = 0
df.loc[df["gender"] == "female","gender"] = 1
>>> df
gender id
0 0 1
1 1 2
2 1 3
DataFrameに新しい行を追加する
与えられたDataFrame:
s1 = pd.Series([1,2,3])
s2 = pd.Series(['a','b','c'])
df = pd.DataFrame([list(s1), list(s2)], columns = ["C1", "C2", "C3"])
print df
出力:
C1 C2 C3
0 1 2 3
1 a b c
新しい行を追加します[10,11,12]
:
df = pd.DataFrame(np.array([[10,11,12]]), \
columns=["C1", "C2", "C3"]).append(df, ignore_index=True)
print df
出力:
C1 C2 C3
0 10 11 12
1 1 2 3
2 a b c
DataFrameから行を削除/削除する
最初にDataFrameを生成しましょう:
df = pd.DataFrame(np.arange(10).reshape(5,2), columns=list('ab'))
print(df)
# Output:
# a b
# 0 0 1
# 1 2 3
# 2 4 5
# 3 6 7
# 4 8 9
drop drop([...], inplace=True)
メソッドを使用して、インデックス付きの行を0
および4
ドロップします。
df.drop([0,4], inplace=True)
print(df)
# Output
# a b
# 1 2 3
# 2 4 5
# 3 6 7
df = drop([...])
メソッドを使用して、インデックス付きの行を0
および4
ドロップします。
df = pd.DataFrame(np.arange(10).reshape(5,2), columns=list('ab'))
df = df.drop([0,4])
print(df)
# Output:
# a b
# 1 2 3
# 2 4 5
# 3 6 7
ネガティブ選択法を使用して:
df = pd.DataFrame(np.arange(10).reshape(5,2), columns=list('ab'))
df = df[~df.index.isin([0,4])]
print(df)
# Output:
# a b
# 1 2 3
# 2 4 5
# 3 6 7
列の並べ替え
# get a list of columns
cols = list(df)
# move the column to head of list using index, pop and insert
cols.insert(0, cols.pop(cols.index('listing')))
# use ix to reorder
df2 = df.ix[:, cols]
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow