ฉันต้องการเพิ่ม_x
คำต่อท้ายให้กับชื่อคอลัมน์แต่ละคอลัมน์ดังนี้:
featuresA = myPandasDataFrame.columns.values + '_x'
ฉันต้องทำอย่างไร นอกจากนี้หากฉันต้องการเพิ่มx_
เป็นคำต่อท้ายวิธีแก้ไขจะเปลี่ยนไปอย่างไร
ฉันต้องการเพิ่ม_x
คำต่อท้ายให้กับชื่อคอลัมน์แต่ละคอลัมน์ดังนี้:
featuresA = myPandasDataFrame.columns.values + '_x'
ฉันต้องทำอย่างไร นอกจากนี้หากฉันต้องการเพิ่มx_
เป็นคำต่อท้ายวิธีแก้ไขจะเปลี่ยนไปอย่างไร
คำตอบ:
คุณสามารถใช้ความlist
เข้าใจ:
df.columns = [str(col) + '_x' for col in df.columns]
นอกจากนี้ยังมีวิธีการในตัวเช่น.add_suffix()
และ.add_prefix()
ตามที่กล่าวไว้ในคำตอบอื่น
ต่อไปนี้เป็นวิธีที่ดีที่สุดในการเพิ่มคำต่อท้ายในความคิดของฉัน
df = df.add_suffix('_some_suffix')
เนื่องจากเป็นฟังก์ชันที่เรียกใช้บน DataFrame และส่งคืน DataFrame คุณจึงสามารถใช้งานได้ในสายการโทร
inplace=True
ตัวเลือกพารามิเตอร์) มิฉะนั้นสมบูรณ์แบบ
หากคุณกำลังพยายามแก้ไขdf
ในสถานที่ตัวเลือกที่ถูกที่สุด (และง่ายที่สุด) จะอยู่ในตำแหน่งเพิ่มเติมโดยตรงdf.columns
(กล่าวคือใช้Index.__iadd__
)
df = pd.DataFrame({"A": [9, 4, 2, 1], "B": [12, 7, 5, 4]})
df
A B
0 9 12
1 4 7
2 2 5
3 1 4
df.columns += '_some_suffix'
df
A_some_suffix B_some_suffix
0 9 12
1 4 7
2 2 5
3 1 4
ในการเพิ่มคำนำหน้าคุณจะใช้ในทำนองเดียวกัน
df.columns = 'some_prefix_' + df.columns
df
some_prefix_A some_prefix_B
0 9 12
1 4 7
2 2 5
3 1 4
อีกทางเลือกหนึ่งที่ถูกคือการใช้การทำความเข้าใจรายการด้วยf-string
การจัดรูปแบบ (มีใน python3.6 +)
df.columns = [f'{c}_some_suffix' for c in df]
df
A_some_suffix B_some_suffix
0 9 12
1 4 7
2 2 5
3 1 4
และสำหรับคำนำหน้าในทำนองเดียวกัน
df.columns = [f'some_prefix{c}' for c in df]
นอกจากนี้ยังเป็นไปได้ที่จะทำการแก้ไข add * ในขณะที่ผูกมัดวิธี หากต้องการเพิ่มคำต่อท้ายให้ใช้DataFrame.add_suffix
df.add_suffix('_some_suffix')
A_some_suffix B_some_suffix
0 9 12
1 4 7
2 2 5
3 1 4
สิ่งนี้ส่งคืนสำเนาของข้อมูล IOW df
ไม่มีการแก้ไข
DataFrame.add_prefix
เพิ่มคำนำหน้าจะทำยังกับ
df.add_prefix('some_prefix_')
some_prefix_A some_prefix_B
0 9 12
1 4 7
2 2 5
3 1 4
df
ซึ่งยังไม่ได้ปรับเปลี่ยน
add_*fix
นี่เป็นวิธีการที่ดีหากคุณกำลังพยายามผูกมัดวิธีการ:
df.some_method1().some_method2().add_*fix(...)
อย่างไรก็ตามadd_prefix
(และadd_suffix
) สร้างสำเนาของกรอบข้อมูลทั้งหมดเพียงเพื่อแก้ไขส่วนหัว หากคุณเชื่อว่าเป็นการสิ้นเปลือง แต่ยังคงต้องการเชื่อมโยงคุณสามารถโทรpipe
:
def add_suffix(df):
df.columns += '_some_suffix'
return df
df.some_method1().some_method2().pipe(add_suffix)
new
หรือold
) แทนทุกคอลัมน์? ขอบคุณ.
df = pd.DataFrame([[1,2,3]]*10)
-> df.columns
คุณจะใช้df.add_suffix('_x')
df.columns = df.columns.astype(str) + '_x'
ตามวิธีแรกของฉัน
ฉันไม่เห็นโซลูชันนี้ที่เสนอข้างต้นดังนั้นจึงเพิ่มสิ่งนี้ลงในรายการ:
df.columns += '_x'
และคุณสามารถปรับให้เข้ากับสถานการณ์คำนำหน้าได้อย่างง่ายดาย
df = pd.DataFrame([[1,2,3]]*10)
-> df.columns
คุณจะใช้df.add_suffix('_x')
ฉันรู้ 4 วิธีในการเพิ่มคำต่อท้าย (หรือคำนำหน้า) ให้กับชื่อคอลัมน์ของคุณ:
1- df.columns = [str(col) + '_some_suffix' for col in df.columns]
หรือ
2- df.rename(columns= lambda col: col+'_some_suffix')
หรือ
3- df.columns += '_some_suffix'
มาก
หรือที่อร่อยที่สุด:
3- df.add_suffix('_some_suffix')
DataFrame.rename
.การเลิกใช้งานadd_prefix
และadd_suffix
ในรุ่นอนาคตของหมีแพนด้าadd_prefix
และadd_suffix
จะเลิก วิธีใหม่ที่แนะนำคือการใช้DataFrame.rename
:
df = pd.DataFrame({'A': range(3), 'B': range(4, 7)})
print(df)
A B
0 0 4
1 1 5
2 2 6
การใช้rename
กับaxis=1
และการจัดรูปแบบสตริง:
df.rename('col_{}'.format, axis=1)
# or df.rename(columns='col_{}'.format)
col_A col_B
0 0 4
1 1 5
2 2 6
ในการเขียนทับชื่อคอลัมน์ของคุณจริงๆเราสามารถกำหนดค่าที่ส่งคืนให้กับdf
:
df = df.rename('col_{}'.format, axis=1)
หรือใช้inplace=True
:
df.rename('col_{}'.format, axis=1, inplace=True)