คำถามติดแท็ก pandas

Pandas เป็นห้องสมุด Python สำหรับการจัดการและวิเคราะห์ข้อมูลเช่น dataframes, อนุกรมเวลาหลายมิติและชุดข้อมูลแบบตัดขวางซึ่งมักพบในสถิติ, ผลการทดลองทางวิทยาศาสตร์, เศรษฐมิติหรือการเงิน Pandas เป็นหนึ่งในห้องสมุดวิทยาศาสตร์ข้อมูลที่สำคัญใน Python

5
การใช้ฟังก์ชั่นที่มีหลายอาร์กิวเมนต์เพื่อสร้างคอลัมน์แพนด้าใหม่
ฉันต้องการสร้างคอลัมน์ใหม่ในpandasกรอบข้อมูลโดยใช้ฟังก์ชั่นกับสองคอลัมน์ที่มีอยู่ ทำตามคำตอบนี้ฉันสามารถสร้างคอลัมน์ใหม่เมื่อฉันต้องการเพียงหนึ่งคอลัมน์เป็นอาร์กิวเมนต์: import pandas as pd df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]}) def fx(x): return x * x print(df) df['newcolumn'] = df.A.apply(fx) print(df) อย่างไรก็ตามฉันไม่สามารถหาวิธีทำสิ่งเดียวกันได้เมื่อฟังก์ชันต้องการอาร์กิวเมนต์หลายตัว ตัวอย่างเช่นฉันจะสร้างคอลัมน์ใหม่โดยผ่านคอลัมน์ A และคอลัมน์ B ไปยังฟังก์ชันด้านล่างได้อย่างไร def fxy(x, y): return x * y
165 python  pandas 

4
Pandas DataFrame ไปยังรายการพจนานุกรม
ฉันมี DataFrame ต่อไปนี้: ลูกค้ารายการ 1 รายการ 2 รายการ 3 มะเขือเทศนม 1 แอปเปิ้ล 2 น้ำมันฝรั่งสีส้ม 3 มะม่วงน้ำผลไม้ชิป ซึ่งฉันต้องการแปลให้เป็นรายการของพจนานุกรมต่อแถว rows = [{'customer': 1, 'item1': 'apple', 'item2': 'milk', 'item3': 'tomato'}, {'customer': 2, 'item1': 'water', 'item2': 'orange', 'item3': 'potato'}, {'customer': 3, 'item1': 'juice', 'item2': 'mango', 'item3': 'chips'}]

8
นำหลายรายการไปไว้ใน dataframe
ฉันจะรับหลายรายการและวางเป็นคอลัมน์ต่าง ๆ ใน python dataframe ได้อย่างไร ฉันลองวิธีนี้แต่มีปัญหา ความพยายามที่ 1: มีสามรายการแล้วบีบเข้าด้วยกันแล้วใช้มัน res = zip(lst1,lst2,lst3) ให้ผลเพียงหนึ่งคอลัมน์ พยายาม 2: percentile_list = pd.DataFrame({'lst1Tite' : [lst1], 'lst2Tite' : [lst2], 'lst3Tite' : [lst3] }, columns=['lst1Tite','lst1Tite', 'lst1Tite']) ให้ผลตอบแทนหนึ่งแถว 3 คอลัมน์ (ทางด้านบน) หรือถ้าฉันเปลี่ยนเป็น 3 แถวและ 1 คอลัมน์ ฉันจะได้รับ 100 แถว (ความยาวของแต่ละรายการอิสระ) ได้อย่างไรโดย 3 คอลัมน์ (สามรายการ) pandas dataframe
164 python  numpy  pandas 

10
คอลัมน์ Pandas ของรายการสร้างแถวสำหรับแต่ละองค์ประกอบรายการ
ฉันมีไฟล์ข้อมูลที่บางเซลล์มีรายการค่าหลายค่า แทนที่จะเก็บค่าหลายค่าในเซลล์ฉันต้องการขยายดาต้าเฟรมเพื่อให้แต่ละไอเท็มในรายการได้รับแถวของตัวเอง (ด้วยค่าเดียวกันในคอลัมน์อื่นทั้งหมด) ดังนั้นถ้าฉันมี: import pandas as pd import numpy as np df = pd.DataFrame( {'trial_num': [1, 2, 3, 1, 2, 3], 'subject': [1, 1, 1, 2, 2, 2], 'samples': [list(np.random.randn(3).round(2)) for i in range(6)] } ) df Out[10]: samples subject trial_num 0 [0.57, -0.83, 1.44] 1 1 1 [-0.01, …
163 python  pandas  list 

13
เปรียบเทียบ DataFrames สองรายการและส่งออกความแตกต่างแบบเคียงข้างกัน
ฉันพยายามเน้นสิ่งที่เปลี่ยนแปลงระหว่างสอง dataframes สมมติว่าฉันมี Python Pandas สองไฟล์: "StudentRoster Jan-1": id Name score isEnrolled Comment 111 Jack 2.17 True He was late to class 112 Nick 1.11 False Graduated 113 Zoe 4.12 True "StudentRoster Jan-2": id Name score isEnrolled Comment 111 Jack 2.17 True He was late to class 112 Nick 1.21 …
162 python  html  pandas  dataframe  panel 

3
นุ่นได้รับ n บันทึกสูงสุดภายในแต่ละกลุ่ม
สมมติว่าฉันมี DataFrame นุ่นเช่นนี้: >>> df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4],'value':[1,2,3,1,2,3,4,1,1]}) >>> df id value 0 1 1 1 1 2 2 1 3 3 2 1 4 2 2 5 2 3 6 2 4 7 3 1 8 4 1 ฉันต้องการรับ DataFrame ใหม่โดยมี 2 อันดับแรกสำหรับแต่ละ id เช่นนี้ id value 0 1 1 …

5
จัดรูปแบบ / ระงับสัญลักษณ์ทางวิทยาศาสตร์จาก Python Pandas Aggregation Results
หนึ่งสามารถปรับเปลี่ยนรูปแบบสำหรับการส่งออกจากการดำเนินงาน groupby ในแพนด้าที่ผลิตสัญกรณ์ทางวิทยาศาสตร์สำหรับจำนวนมาก? ฉันรู้วิธีการจัดรูปแบบสตริงในไพ ธ อน แต่ฉันรู้สึกแย่เมื่อพูดถึงการประยุกต์ใช้ที่นี่ df1.groupby('dept')['data1'].sum() dept value1 1.192433e+08 value2 1.293066e+08 value3 1.077142e+08 นี่เป็นการยับยั้งสัญกรณ์วิทยาศาสตร์ถ้าฉันแปลงเป็นสตริง แต่ตอนนี้ฉันแค่สงสัยว่าจะจัดรูปแบบสตริงและเพิ่มทศนิยมได้อย่างไร sum_sales_dept.astype(str)

12
python python: ลบรายการที่ซ้ำกันโดยคอลัมน์ A, ทำให้แถวมีค่าสูงสุดในคอลัมน์ B
ฉันมี dataframe ที่มีค่าซ้ำในคอลัมน์ A ฉันต้องการปล่อยรายการที่ซ้ำกันรักษาแถวด้วยค่าสูงสุดในคอลัมน์ B ดังนั้นนี่คือ: A B 1 10 1 20 2 30 2 40 3 10 ควรเปลี่ยนเป็น: A B 1 20 2 40 3 10 เวสสตรีทได้เพิ่มบางฟังก์ชันการทำงานที่ดีที่จะซ้ำกันวาง: http://wesmckinney.com/blog/?p=340 แต่ AFAICT มันถูกออกแบบมาสำหรับการทำซ้ำที่แน่นอนดังนั้นจึงไม่มีการกล่าวถึงเกณฑ์สำหรับการเลือกแถวที่จะเก็บไว้ ฉันเดาว่าอาจเป็นวิธีที่ง่ายในการทำ --- อาจจะง่ายเหมือนกับการคัดแยกดาต้าเฟรมก่อนที่จะทิ้งข้อมูลที่ซ้ำกัน --- แต่ฉันไม่รู้ว่าตรรกะภายในของกรุ๊ปบายเพียงพอที่จะเข้าใจได้ ข้อเสนอแนะใด ๆ

4
ทำไมแพนด้าถึงถูกรวมเข้ากับไพ ธ อนเร็วกว่า data.table จึงถูกรวมใน R ในปี 2012?
ฉันเพิ่งเจอห้องสมุดแพนด้าสำหรับงูหลามซึ่งตามมาตรฐานนี้ทำการผสานในหน่วยความจำที่รวดเร็วมาก มันเร็วกว่าแพ็คเกจdata.tableใน R (ภาษาที่ฉันเลือกใช้ในการวิเคราะห์) เหตุใดpandasจึงเร็วกว่าdata.tableมาก เป็นเพราะความได้เปรียบทางด้านความเร็วของงูหลามมีมากกว่า R หรือมีข้อเสียบางอย่างที่ฉันไม่ทราบ? มีวิธีการรวมภายในและภายนอกdata.tableโดยไม่หันไปmerge(X, Y, all=FALSE)และmerge(X, Y, all=TRUE)? นี่คือรหัส Rและรหัส Python ที่ใช้ในการกำหนดมาตรฐานของแพ็คเกจต่างๆ
160 python  r  join  data.table  pandas 

8
NumPy หรือ Pandas: การรักษาประเภทอาร์เรย์ให้เป็นจำนวนเต็มในขณะที่มีค่า NaN
มีวิธีที่ต้องการเพื่อรักษาชนิดข้อมูลของnumpyอาร์เรย์คงที่เป็นint( int64หรืออะไรก็ตาม) ในขณะที่ยังคงมีองค์ประกอบภายในรายการเป็นnumpy.NaN? โดยเฉพาะอย่างยิ่งฉันกำลังแปลงโครงสร้างข้อมูลภายในเป็น Pandas DataFrame ในโครงสร้างของเราเรามีคอลัมน์ประเภทจำนวนเต็มที่ยังคงมี NaN (แต่ dtype ของคอลัมน์นั้นเป็น int) มันดูเหมือนว่าจะแต่งทุกอย่างตามที่ลอยถ้าเราทำให้เรื่องนี้เป็น DataFrame intแต่เราจะชอบที่จะเป็น คิด? สิ่งที่พยายาม: ฉันพยายามใช้from_records()ฟังก์ชั่นภายใต้ pandas.DataFrame ด้วยcoerce_float=Falseและสิ่งนี้ไม่ได้ช่วย ฉันยังลองใช้ NumPy masked arrays ด้วย NaN fill_value ซึ่งใช้งานไม่ได้ สิ่งเหล่านี้ทำให้ชนิดข้อมูลคอลัมน์กลายเป็นแบบลอย

5
รวมสอง dataframes ตามดัชนี
สวัสดีฉันมีไฟล์ข้อมูลต่อไปนี้: > df1 id begin conditional confidence discoveryTechnique 0 278 56 false 0.0 1 1 421 18 false 0.0 1 > df2 concept 0 A 1 B ฉันจะรวมดัชนีเข้าด้วยกันได้อย่างไร: id begin conditional confidence discoveryTechnique concept 0 278 56 false 0.0 1 A 1 421 18 false 0.0 1 B ฉันถามเพราะมันเป็นความเข้าใจของฉันว่าmerge()คือdf1.merge(df2)ใช้คอลัมน์ที่จะทำที่ตรงกัน ในความเป็นจริงการทำเช่นนี้ฉันจะได้รับ: …

6
ปล่อยแถวที่ซ้ำกันทั้งหมดใน Python Pandas
pandas drop_duplicatesฟังก์ชั่นที่ดีสำหรับ "uniquifying" dataframe อย่างไรก็ตามหนึ่งในอาร์กิวเมนต์ของคำหลักที่จะผ่านคือtake_last=Trueหรือtake_last=Falseในขณะที่ฉันต้องการวางแถวทั้งหมดที่ซ้ำกันในส่วนย่อยของคอลัมน์ เป็นไปได้ไหม A B C 0 foo 0 A 1 foo 1 A 2 foo 1 B 3 bar 1 A เป็นตัวอย่างที่ผมอยากจะวางแถวซึ่งตรงกับในคอลัมน์AและCดังนั้นนี้จะลดลงแถว 0 และ 1

14
เปอร์เซ็นต์ของแพนด้าทั้งหมดกับ groupby
เห็นได้ชัดว่านี่เป็นเรื่องง่าย แต่ในฐานะที่เป็นคนใหม่ฉันกำลังติดขัด ฉันมีไฟล์ CSV ที่มี 3 คอลัมน์สถานะรหัสสำนักงานและการขายสำหรับสำนักงานนั้น ฉันต้องการคำนวณเปอร์เซ็นต์ของยอดขายต่อสำนักงานในสถานะที่กำหนด (เปอร์เซ็นต์ทั้งหมดในแต่ละรัฐคือ 100%) df = pd.DataFrame({'state': ['CA', 'WA', 'CO', 'AZ'] * 3, 'office_id': range(1, 7) * 2, 'sales': [np.random.randint(100000, 999999) for _ in range(12)]}) df.groupby(['state', 'office_id']).agg({'sales': 'sum'}) ผลตอบแทนนี้: sales state office_id AZ 2 839507 4 373917 6 347225 CA 1 798585 3 890850 …
160 python  pandas 

8
วิธีค้นหาว่าคอลัมน์ใดมีค่า NaN ใน Pandas dataframe
กำหนดดาต้าเฟรมของแพนด้าที่มีค่า NaN ที่เป็นไปได้ซึ่งกระจัดกระจายอยู่ที่นี่และที่นั่น: คำถาม:ฉันจะทราบได้อย่างไรว่าคอลัมน์ใดมีค่า NaN โดยเฉพาะอย่างยิ่งฉันจะได้รับรายชื่อคอลัมน์ที่มี NaNs หรือไม่
160 python  pandas  dataframe  nan 

6
การเลือกแถวแบบสุ่มใน Pandaframe Pandas
มีวิธีเลือกสุ่มแถวจาก DataFrame ใน Pandas หรือไม่ ใน R ใช้แพ็คเกจรถยนต์มีฟังก์ชั่นที่มีประโยชน์some(x, n)ซึ่งคล้ายกับ head แต่เลือกในตัวอย่างนี้ 10 แถวที่สุ่มจาก x ฉันยังดูเอกสารการแบ่งส่วนและดูเหมือนจะไม่มีอะไรเทียบเท่า ปรับปรุง ตอนนี้ใช้เวอร์ชั่น 20 มีวิธีตัวอย่างอยู่ df.sample(n)
159 python  pandas 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.