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

ฟังก์ชันเพื่อเรียกใช้ฟังก์ชันอื่นด้วยรายการอาร์กิวเมนต์

5
นุ่นสร้างคอลัมน์ใหม่ขึ้นอยู่กับค่าจากคอลัมน์อื่น ๆ / ใช้ฟังก์ชั่นของหลาย ๆ คอลัมน์แถวฉลาด
ฉันต้องการที่จะใช้ฟังก์ชั่นที่กำหนดเองของฉัน (จะใช้บันไดถ้า-อื่น) เหล่านี้หกคอลัมน์ ( ERI_Hispanic, ERI_AmerInd_AKNatv, ERI_Asian, ERI_Black_Afr.Amer, ERI_HI_PacIsl, ERI_White) ในแถวของ dataframe ของฉันในแต่ละ ฉันลองใช้วิธีการที่แตกต่างจากคำถามอื่น ๆ แต่ก็ยังหาคำตอบที่เหมาะสมสำหรับปัญหาของฉันไม่ได้ สิ่งสำคัญของเรื่องนี้คือถ้าบุคคลนั้นถูกนับว่าเป็นฮิสแปนิกพวกเขาจะไม่สามารถถูกนับเป็นสิ่งอื่นได้ แม้ว่าพวกเขาจะมี "1" ในคอลัมน์เชื้อชาติอื่นพวกเขายังคงถูกนับว่าเป็นฮิสแปนิกไม่ใช่สองเผ่าพันธุ์หรือมากกว่า ในทำนองเดียวกันหากผลรวมของคอลัมน์ ERI ทั้งหมดมากกว่า 1 พวกเขาจะถูกนับเป็นสองเชื้อชาติหรือมากกว่าและไม่สามารถนับได้ว่าเป็นเชื้อชาติที่ไม่ซ้ำกัน (ยกเว้นฮิสแปนิก) หวังว่านี่จะสมเหตุสมผล ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก มันเกือบจะเหมือนกับการทำลูปผ่านแต่ละแถวและถ้าแต่ละเรคคอร์ดตรงตามเกณฑ์พวกมันจะถูกเพิ่มเข้าไปในรายการเดียวและตัดออกจากต้นฉบับ จาก dataframe ด้านล่างฉันจำเป็นต้องคำนวณคอลัมน์ใหม่ตามข้อมูลจำเพาะต่อไปนี้ใน SQL: ========================= เกณฑ์การตัดสิน ======================== ======= IF [ERI_Hispanic] = 1 THEN RETURN “Hispanic” ELSE IF SUM([ERI_AmerInd_AKNatv] + …
316 python  pandas  numpy  apply 

6
ทำไมฟังก์ชั่น 'ใช้' ของนุ่นถึงการอ้างอิงหลายคอลัมน์ทำงานไม่ได้ [ปิด]
ปิด. คำถามนี้เป็นคำถามที่ไม่สามารถทำซ้ำหรือเกิดจากความผิดพลาด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดเมื่อปีที่แล้ว ปรับปรุงคำถามนี้ ฉันมีปัญหาบางอย่างเกี่ยวกับฟังก์ชั่นการใช้หมีแพนด้าเมื่อใช้หลายคอลัมน์ด้วยดาต้าเฟรมต่อไปนี้ df = DataFrame ({'a' : np.random.randn(6), 'b' : ['foo', 'bar'] * 3, 'c' : np.random.randn(6)}) และฟังก์ชั่นดังต่อไปนี้ def my_test(a, b): return a % b เมื่อฉันพยายามใช้ฟังก์ชั่นนี้กับ: df['Value'] = df.apply(lambda row: my_test(row[a], row[c]), axis=1) ฉันได้รับข้อความแสดงข้อผิดพลาด: NameError: ("global name 'a' is not defined", u'occurred …

5
ครอบครัวของ R ใช้มากกว่าน้ำตาลประโยคหรือไม่?
... เกี่ยวกับเวลาดำเนินการและ / หรือหน่วยความจำ หากนี่ไม่เป็นจริงให้พิสูจน์ด้วยโค้ดขนาดสั้น โปรดทราบว่าการเร่งความเร็วโดย vectorization จะไม่นับรวม speedup ต้องมาจากapply( tapply, sapply, ... ) ตัวเอง
152 r  apply 

11
ลบคอลัมน์ออกจาก dataframe โดยที่ค่าทั้งหมดคือ NA
ฉันมีปัญหากับกรอบข้อมูลและไม่สามารถจริงๆแก้ไขปัญหาที่ตัวเอง: dataframeมีพลคุณสมบัติเป็นคอลัมน์และแต่ละแถวเป็นหนึ่งในชุดข้อมูล คำถามคือ: วิธีการกำจัดคอลัมน์ที่ทุกค่าแถวคือ NA ?
149 r  apply  dataframe 

4
หลาม pandas: ใช้ฟังก์ชั่นที่มีข้อโต้แย้งกับซีรีส์
ฉันต้องการใช้ฟังก์ชั่นที่มีข้อโต้แย้งกับชุดใน python python: x = my_series.apply(my_function, more_arguments_1) y = my_series.apply(my_function, more_arguments_2) ... เอกสารอธิบายการสนับสนุนสำหรับวิธีการใช้ แต่ก็ไม่ได้ยอมรับข้อโต้แย้งใด ๆ มีวิธีอื่นที่ยอมรับการขัดแย้งไหม? หรือมิฉะนั้นฉันไม่มีวิธีแก้ปัญหาง่ายๆ อัปเดต (ตุลาคม 2017): โปรดทราบว่าเนื่องจากคำถามนี้ถูกถามตั้งแต่แรกว่าแพนด้าapply()ได้รับการอัปเดตเพื่อจัดการอาร์กิวเมนต์ตำแหน่งและคำหลักและลิงก์เอกสารด้านบนตอนนี้สะท้อนให้เห็นแล้วและแสดงวิธีรวมอาร์กิวเมนต์ประเภทใดประเภทหนึ่ง
147 python  pandas  apply 

4
ครอบครัว“ * นำไปใช้” ไม่ได้รับการปรับเวกเตอร์จริงๆเหรอ?
ดังนั้นเราจึงเคยพูดกับผู้ใช้ R ใหม่ทุกคนว่า " applyไม่ใช่ vectorized ลองดู Patrick Burns R Inferno Circle 4 " ซึ่งบอกว่า (ฉันพูด): การสะท้อนที่พบบ่อยคือการใช้ฟังก์ชั่นในครอบครัวใช้ นี้ไม่ได้เป็น vectorization ก็เป็นห่วงซ่อน ฟังก์ชั่นใช้มีห่วงสำหรับในความหมายของมัน ฟังก์ชัน lapply ฝังลูป แต่เวลาดำเนินการมีแนวโน้มที่จะเท่ากับคร่าว ๆ อย่างชัดเจนสำหรับลูป อันที่จริงการดูอย่างรวดเร็วของapplyซอร์สโค้ดแสดงการวนซ้ำ: grep("for", capture.output(getAnywhere("apply")), value = TRUE) ## [1] " for (i in 1L:d2) {" " else for (i in 1L:d2) {" โอเคจนถึงตอนนี้ แต่การดูlapplyหรือvapplyเปิดเผยภาพที่แตกต่างอย่างสิ้นเชิงจริง …

6
ใช้ฟังก์ชันกับทุกแถวของเมทริกซ์หรือกรอบข้อมูล
สมมติว่าฉันมีเมทริกซ์คูณ 2 และฟังก์ชันที่ใช้เวกเตอร์ 2 ตัวเป็นหนึ่งในอาร์กิวเมนต์ของมัน ฉันต้องการใช้ฟังก์ชันกับแต่ละแถวของเมทริกซ์และรับ n-vector วิธีการทำใน R? ตัวอย่างเช่นฉันต้องการคำนวณความหนาแน่นของการแจกแจงแบบปกติมาตรฐาน 2 มิติในสามจุด: bivariate.density(x = c(0, 0), mu = c(0, 0), sigma = c(1, 1), rho = 0){ exp(-1/(2*(1-rho^2))*(x[1]^2/sigma[1]^2+x[2]^2/sigma[2]^2-2*rho*x[1]*x[2]/(sigma[1]*sigma[2]))) * 1/(2*pi*sigma[1]*sigma[2]*sqrt(1-rho^2)) } out <- rbind(c(1, 2), c(3, 4), c(5, 6)) วิธีการใช้ฟังก์ชันกับแต่ละแถวout? จะส่งผ่านค่าสำหรับอาร์กิวเมนต์อื่น ๆ นอกเหนือจากจุดไปยังฟังก์ชันตามที่คุณระบุได้อย่างไร?
130 r  function  matrix  apply  sapply 

4
เมื่อใดที่ฉันควรใช้ pandas apply () ในรหัสของฉัน
applyฉันได้เห็นหลายคำตอบโพสต์คำถามในกองมากเกินเกี่ยวข้องกับการใช้วิธีแพนด้า ฉันยังเห็นผู้ใช้แสดงความคิดเห็นใต้พวกเขาโดยบอกว่า " applyช้าและควรหลีกเลี่ยง" ฉันได้อ่านบทความมากมายในหัวข้อประสิทธิภาพที่อธิบายว่าapplyช้า ฉันยังได้เห็นข้อจำกัดความรับผิดชอบในเอกสารว่าapplyเป็นเพียงฟังก์ชันอำนวยความสะดวกในการส่ง UDFs (ดูเหมือนจะไม่พบในตอนนี้) ดังนั้นฉันทามติทั่วไปคือapplyควรหลีกเลี่ยงถ้าเป็นไปได้ อย่างไรก็ตามสิ่งนี้ทำให้เกิดคำถามต่อไปนี้: ถ้าapplyแย่มากแล้วทำไมถึงอยู่ใน API? ฉันควรสร้างรหัสapplyฟรีอย่างไรและเมื่อใด เคยมีสถานการณ์ใด ๆ ที่applyเป็นสิ่งที่ดี (ดีกว่าการแก้ปัญหาที่เป็นไปได้อื่น ๆ )?

9
ส่งคืนหลายคอลัมน์จากการใช้แพนด้า ()
ฉันมี DataFrame แพนด้า, df_test. ประกอบด้วยคอลัมน์ 'ขนาด' ซึ่งแสดงขนาดเป็นไบต์ ฉันคำนวณ KB, MB และ GB โดยใช้รหัสต่อไปนี้: df_test = pd.DataFrame([ {'dir': '/Users/uname1', 'size': 994933}, {'dir': '/Users/uname2', 'size': 109338711}, ]) df_test['size_kb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x / 1024.0, grouping=True) + ' KB') df_test['size_mb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x / 1024.0 ** 2, grouping=True) + ' …


1
ใช้ฟังก์ชันกับแต่ละเซลล์ใน DataFrame
ฉันมี dataframe ที่อาจมีลักษณะดังนี้: A B C foo bar foo bar bar foo foo bar ฉันต้องการดูทุกองค์ประกอบของแต่ละแถว (หรือทุกองค์ประกอบของแต่ละคอลัมน์) และใช้ฟังก์ชันต่อไปนี้เพื่อรับ DF ที่ตามมา: def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar มีหนึ่งซับง่ายๆที่สามารถใช้ฟังก์ชันกับแต่ละเซลล์ได้หรือไม่? นี่เป็นตัวอย่างที่เรียบง่ายดังนั้นอาจมีวิธีที่ง่ายกว่าในการดำเนินการตัวอย่างนี้นอกเหนือจากการใช้ฟังก์ชัน แต่สิ่งที่ฉันถามจริงๆคือวิธีการใช้ฟังก์ชันในทุกเซลล์ภายในดาต้าเฟรม

4
ทำไมลูปจึงช้าใน R
ฉันรู้ว่าลูปช้าRและฉันควรพยายามทำสิ่งต่างๆในลักษณะเวกเตอร์แทน แต่ทำไม? ทำไมลูปจึงช้าและapplyเร็ว applyเรียกใช้ฟังก์ชันย่อยหลายอย่างซึ่งดูเหมือนจะไม่เร็ว อัปเดต:ขออภัยคำถามไม่ถูกต้อง ฉันสับสนกับเวกapplyเตอร์ คำถามของฉันควรจะเป็น "เหตุใด vectorisation จึงเร็วกว่า"
87 performance  r  apply 

3
นุ่นเขียนทับค่าในหลายคอลัมน์พร้อมกันตามเงื่อนไขของค่าในหนึ่งคอลัมน์
ฉันมี DataFrame ดังกล่าว: df = pd.DataFrame(data={ 'col0': [11, 22,1, 5] 'col1': ['aa:a:aaa', 'a:a', 'a', 'a:aa:a:aaa'], 'col2': ["foo", "foo", "foobar", "bar"], 'col3': [True, False, True, False], 'col4': ['elo', 'foo', 'bar', 'dupa']}) ฉันต้องการรับความยาวของรายการหลังจากแบ่งเป็น ":" ใน col1 แล้วฉันต้องการเขียนทับค่าถ้า length> 2 หรือไม่เขียนทับค่าถ้า length <= 2 จะเป็นการดีในหนึ่งบรรทัดที่รวดเร็วที่สุด ขณะนี้ฉันลองแล้ว แต่จะส่งคืน ValueError df[['col1', 'col2', 'col3']] = df.loc[df['col1'].str.split(":").apply(len) …
11 python  pandas  apply 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.