Python Pandas - การทำดัชนีใหม่
Reindexingเปลี่ยนป้ายชื่อแถวและป้ายชื่อคอลัมน์ของ DataFrame ในการจัดทำดัชนีใหม่หมายถึงการปรับข้อมูลให้ตรงกับชุดของป้ายกำกับที่กำหนดตามแกนเฉพาะ
การดำเนินการหลายอย่างสามารถทำได้ผ่านการสร้างดัชนีเช่น -
จัดลำดับข้อมูลที่มีอยู่ใหม่เพื่อให้ตรงกับป้ายกำกับชุดใหม่
ใส่เครื่องหมายค่าที่ขาดหายไป (NA) ในตำแหน่งป้ายที่ไม่มีข้อมูลสำหรับป้ายกำกับ
ตัวอย่าง
import pandas as pd
import numpy as np
N=20
df = pd.DataFrame({
'A': pd.date_range(start='2016-01-01',periods=N,freq='D'),
'x': np.linspace(0,stop=N-1,num=N),
'y': np.random.rand(N),
'C': np.random.choice(['Low','Medium','High'],N).tolist(),
'D': np.random.normal(100, 10, size=(N)).tolist()
})
#reindex the DataFrame
df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B'])
print df_reindexed
มัน output มีดังนี้ -
A C B
0 2016-01-01 Low NaN
2 2016-01-03 High NaN
5 2016-01-06 Low NaN
Reindex เพื่อจัดแนวกับวัตถุอื่น ๆ
คุณอาจต้องการนำวัตถุและทำดัชนีแกนของมันอีกครั้งเพื่อให้มีป้ายกำกับเหมือนกับวัตถุอื่น พิจารณาตัวอย่างต่อไปนี้เพื่อให้เข้าใจตรงกัน
ตัวอย่าง
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(10,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(7,3),columns=['col1','col2','col3'])
df1 = df1.reindex_like(df2)
print df1
มัน output มีดังนี้ -
col1 col2 col3
0 -2.467652 -1.211687 -0.391761
1 -0.287396 0.522350 0.562512
2 -0.255409 -0.483250 1.866258
3 -1.150467 -0.646493 -0.222462
4 0.152768 -2.056643 1.877233
5 -1.155997 1.528719 -1.343719
6 -1.015606 -1.245936 -0.295275
Note - ที่นี่ df1 DataFrame ได้รับการเปลี่ยนแปลงและจัดทำดัชนีใหม่เช่น df2. ชื่อคอลัมน์ควรตรงกันไม่เช่นนั้นจะเพิ่ม NAN สำหรับป้ายชื่อคอลัมน์ทั้งหมด
กรอกข้อมูลขณะทำดัชนีใหม่
reindex() ใช้วิธีพารามิเตอร์ทางเลือกซึ่งเป็นวิธีการเติมที่มีค่าดังนี้ -
pad/ffill - กรอกค่าไปข้างหน้า
bfill/backfill - กรอกค่าย้อนหลัง
nearest - กรอกจากค่าดัชนีที่ใกล้ที่สุด
ตัวอย่าง
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
# Padding NAN's
print df2.reindex_like(df1)
# Now Fill the NAN's with preceding Values
print ("Data Frame with Forward Fill:")
print df2.reindex_like(df1,method='ffill')
มัน output มีดังนี้ -
col1 col2 col3
0 1.311620 -0.707176 0.599863
1 -0.423455 -0.700265 1.133371
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
Data Frame with Forward Fill:
col1 col2 col3
0 1.311620 -0.707176 0.599863
1 -0.423455 -0.700265 1.133371
2 -0.423455 -0.700265 1.133371
3 -0.423455 -0.700265 1.133371
4 -0.423455 -0.700265 1.133371
5 -0.423455 -0.700265 1.133371
Note - เบาะสี่แถวสุดท้าย
ขีด จำกัด ในการเติมขณะทำดัชนีใหม่
อาร์กิวเมนต์ จำกัด ให้การควบคุมเพิ่มเติมเกี่ยวกับการเติมในขณะที่ทำดัชนีใหม่ ขีด จำกัด ระบุจำนวนสูงสุดของการแข่งขันติดต่อกัน ให้เราพิจารณาตัวอย่างต่อไปนี้เพื่อทำความเข้าใจเช่นเดียวกัน -
ตัวอย่าง
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
# Padding NAN's
print df2.reindex_like(df1)
# Now Fill the NAN's with preceding Values
print ("Data Frame with Forward Fill limiting to 1:")
print df2.reindex_like(df1,method='ffill',limit=1)
มัน output มีดังนี้ -
col1 col2 col3
0 0.247784 2.128727 0.702576
1 -0.055713 -0.021732 -0.174577
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
Data Frame with Forward Fill limiting to 1:
col1 col2 col3
0 0.247784 2.128727 0.702576
1 -0.055713 -0.021732 -0.174577
2 -0.055713 -0.021732 -0.174577
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
Note- สังเกตเฉพาะแถวที่ 7 เท่านั้นที่เต็มไปด้วยแถวที่ 6 ก่อนหน้า จากนั้นแถวจะเหลือตามที่เป็นอยู่
การเปลี่ยนชื่อ
วิธีการเปลี่ยนชื่อ () ช่วยให้คุณสามารถกำหนดชื่อแกนใหม่ตามการแมปบางส่วน (คำสั่งหรือชุดข้อมูล) หรือฟังก์ชันโดยพลการ
ให้เราพิจารณาตัวอย่างต่อไปนี้เพื่อทำความเข้าใจสิ่งนี้ -
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
print df1
print ("After renaming the rows and columns:")
print df1.rename(columns={'col1' : 'c1', 'col2' : 'c2'},
index = {0 : 'apple', 1 : 'banana', 2 : 'durian'})
มัน output มีดังนี้ -
col1 col2 col3
0 0.486791 0.105759 1.540122
1 -0.990237 1.007885 -0.217896
2 -0.483855 -1.645027 -1.194113
3 -0.122316 0.566277 -0.366028
4 -0.231524 -0.721172 -0.112007
5 0.438810 0.000225 0.435479
After renaming the rows and columns:
c1 c2 col3
apple 0.486791 0.105759 1.540122
banana -0.990237 1.007885 -0.217896
durian -0.483855 -1.645027 -1.194113
3 -0.122316 0.566277 -0.366028
4 -0.231524 -0.721172 -0.112007
5 0.438810 0.000225 0.435479
วิธีการเปลี่ยนชื่อ () ให้ไฟล์ inplaceพารามิเตอร์ที่ตั้งชื่อซึ่งโดยค่าเริ่มต้นคือ False และคัดลอกข้อมูลพื้นฐาน ผ่านinplace=True เพื่อเปลี่ยนชื่อข้อมูลในสถานที่