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

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

3
เหตุใดการกำหนดด้วย [:] เมื่อเปรียบเทียบกับ iloc [:] ให้ผลลัพธ์ที่แตกต่างกันในรูปของแพนด้า?
ฉันสับสนกับวิธีการจัดทำดัชนีที่แตกต่างกันที่ใช้ilocในแพนด้า สมมติว่าฉันกำลังพยายามแปลงดาต้าเฟรม 1 วันเป็นดาต้าเฟลมแบบ 2 มิติ ก่อนอื่นฉันมี Dataframe 1-d ต่อไปนี้ a_array = [1,2,3,4,5,6,7,8] a_df = pd.DataFrame(a_array).T และฉันจะไปแปลงที่เป็น 2 มิติ Dataframe 2x4กับขนาดของ ฉันเริ่มต้นด้วยการตั้งค่า Dataframe 2 มิติดังต่อไปนี้: b_df = pd.DataFrame(columns=range(4),index=range(2)) จากนั้นฉันใช้ for-loop เพื่อช่วยฉันแปลงa_df(1-d) เป็นb_df(2-d) ด้วยรหัสต่อไปนี้ for i in range(2): b_df.iloc[i,:] = a_df.iloc[0,i*4:(i+1)*4] มันให้ผลลัพธ์ต่อไปนี้กับฉันเท่านั้น 0 1 2 3 0 1 2 3 4 …

1
ฟังก์ชัน to_excel ของนุ่นสร้าง TypeError ที่ไม่คาดคิด
ฉันสร้างพจนานุกรมของ dataframe นุ่น: d[k] = pd.DataFrame(data=data[i]) ดังนั้นฉันคิดว่านั่นd[k]คือ dataframe แพนด้าที่ถูกต้อง แล้วก็ for k in d.keys(): d[k].to_excel (file_name) จากนั้นฉันมีข้อผิดพลาด: TypeError: got invalid input value of type <class 'xml.etree.ElementTree.Element'>, expected string or Element ฉันใช้ Python 3.7, pandas 0.25.3 อัปเดต : หากฉันแทนที่to_excelด้วยto_csvรหัสจะทำงานได้อย่างสมบูรณ์

3
แพนด้า DataFrame MultiIndex ที่ช้า
ฉันมี DataFrame ของแบบฟอร์มแพนด้า: id start_time sequence_no value 0 71 2018-10-17 20:12:43+00:00 114428 3 1 71 2018-10-17 20:12:43+00:00 114429 3 2 71 2018-10-17 20:12:43+00:00 114431 79 3 71 2019-11-06 00:51:14+00:00 216009 100 4 71 2019-11-06 00:51:14+00:00 216011 150 5 71 2019-11-06 00:51:14+00:00 216013 180 6 92 2019-12-01 00:51:14+00:00 114430 19 7 …

2
สร้างผลิตภัณฑ์ไบนารีคาร์ทีเซียนที่ถูกกรอง
คำชี้แจงปัญหา ฉันกำลังมองหาวิธีที่มีประสิทธิภาพในการสร้างผลิตภัณฑ์ไบนารีคาร์ทีเซียนเต็มรูปแบบ (ตารางที่มีทั้งชุดของจริงและเท็จพร้อมคอลัมน์จำนวนหนึ่ง) กรองโดยเงื่อนไขพิเศษบางอย่าง ตัวอย่างเช่นสำหรับสามคอลัมน์ / บิตn=3เราจะได้รับตารางเต็ม df_combs = pd.DataFrame(itertools.product(*([[True, False]] * n))) 0 1 2 0 True True True 1 True True False 2 True False True 3 True False False ... สิ่งนี้ควรถูกกรองโดยพจนานุกรมที่กำหนดชุดค่าผสมพิเศษที่ไม่เกิดร่วมกันดังนี้: mutually_excl = [{0: False, 1: False, 2: True}, {0: True, 2: True}] ตำแหน่งที่คีย์แสดงถึงคอลัมน์ในตารางด้านบน ตัวอย่างจะถูกอ่านเป็น: ถ้า 0 …

1
pandasUDF และ pyarrow 0.15.0
ฉันเพิ่งเริ่มรับข้อผิดพลาดพวงของจำนวนpysparkงานที่ทำงานบนกลุ่ม EMR ข้อผิดพลาดคือ java.lang.IllegalArgumentException at java.nio.ByteBuffer.allocate(ByteBuffer.java:334) at org.apache.arrow.vector.ipc.message.MessageSerializer.readMessage(MessageSerializer.java:543) at org.apache.arrow.vector.ipc.message.MessageChannelReader.readNext(MessageChannelReader.java:58) at org.apache.arrow.vector.ipc.ArrowStreamReader.readSchema(ArrowStreamReader.java:132) at org.apache.arrow.vector.ipc.ArrowReader.initialize(ArrowReader.java:181) at org.apache.arrow.vector.ipc.ArrowReader.ensureInitialized(ArrowReader.java:172) at org.apache.arrow.vector.ipc.ArrowReader.getVectorSchemaRoot(ArrowReader.java:65) at org.apache.spark.sql.execution.python.ArrowPythonRunner$$anon$1.read(ArrowPythonRunner.scala:162) at org.apache.spark.sql.execution.python.ArrowPythonRunner$$anon$1.read(ArrowPythonRunner.scala:122) at org.apache.spark.api.python.BasePythonRunner$ReaderIterator.hasNext(PythonRunner.scala:406) at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37) at org.apache.spark.sql.execution.python.ArrowEvalPythonExec$$anon$2.<init>(ArrowEvalPythonExec.scala:98) at org.apache.spark.sql.execution.python.ArrowEvalPythonExec.evaluate(ArrowEvalPythonExec.scala:96) at org.apache.spark.sql.execution.python.EvalPythonExec$$anonfun$doExecute$1.apply(EvalPythonExec.scala:127)... พวกเขาดูเหมือนจะเกิดขึ้นในการapplyทำงานของซีรีส์แพนด้า การเปลี่ยนแปลงเดียวที่ฉันพบคือpyarrowการอัปเดตในวันเสาร์ (05/10/2019) การทดสอบดูเหมือนจะทำงานกับ 0.14.1 ดังนั้นคำถามของฉันคือถ้าใครรู้ว่านี่เป็นข้อผิดพลาดใน pyarrow ที่ปรับปรุงใหม่หรือมีการเปลี่ยนแปลงที่สำคัญที่จะทำให้ pandasUDF ยากที่จะใช้ในอนาคตหรือไม่

5
เพิ่ม ID ที่พบในรายการในคอลัมน์ใหม่ใน pandas dataframe
สมมติว่าฉันมี dataframe ต่อไปนี้ (คอลัมน์จำนวนเต็มและคอลัมน์ที่มีรายการจำนวนเต็ม) ... ID Found_IDs 0 12345 [15443, 15533, 3433] 1 15533 [2234, 16608, 12002, 7654] 2 6789 [43322, 876544, 36789] และยังมีรายการ ID แยกต่างหาก ... bad_ids = [15533, 876544, 36789, 11111] ระบุว่าและละเว้นdf['ID']คอลัมน์และดัชนีใด ๆ ฉันต้องการดูว่ามีรหัสใด ๆ ในbad_idsรายการที่กล่าวถึงในdf['Found_IDs']คอลัมน์ รหัสที่ฉันมีคือ: df['bad_id'] = [c in l for c, l in zip(bad_ids, df['Found_IDs'])] …

9
สร้างเมทริกซ์ NxN จากหมีแพนด้าหนึ่งคอลัมน์
ฉันมี dataframe โดยแต่ละแถวมีค่ารายการ id list_of_value 0 ['a','b','c'] 1 ['d','b','c'] 2 ['a','b','c'] 3 ['a','b','c'] ฉันต้องทำการคำนวณคะแนนด้วยหนึ่งแถวและเทียบกับแถวอื่น ๆ ทั้งหมด ตัวอย่างเช่น: Step 1: Take value of id 0: ['a','b','c'], Step 2: find the intersection between id 0 and id 1 , resultant = ['b','c'] Step 3: Score Calculation => resultant.size / id.size ทำซ้ำขั้นตอนที่ 2,3 …
11 python  pandas  numpy 

1
จะปล่อยค่า Null จาก dynamic loop ที่สร้างจาก Python ได้อย่างไร?
ฉันมี data-frame เช่นนี้: ORDER_NO 2401 2504 2600 2020020 2019-12-04 2019-12-10 2019-12-12 2020024 2019-12-25 NaN 2019-12-20 2020034 NaN NaN 2019-12-20 2020020 2019-12-12 2019-12-15 2019-12-18 ฉันกำลังสร้าง XML จากกรอบข้อมูลด้านบน ฉันต้องการลบค่า Null ที่ถูกใส่ใน XML รหัสของฉันควรวางคอลัมน์และค่าแถวนั้นจาก XML รหัสของฉัน header = """<ORD>{}</ORD>""" body =""" <osi:ORDSTSINF types:STSCDE="{}"> <DTM>{}</DTM>""" cols = df.columns for row in df.itertuples(): with open(f'{row[1]}.xml', …

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 

2
ฉันจะแยกคอลัมน์ด้วย regex เพื่อย้าย CAPS ต่อท้ายไปยังคอลัมน์แยกได้อย่างไร
ฉันพยายามแบ่งคอลัมน์โดยใช้ regex แต่ไม่สามารถแยกได้อย่างถูกต้อง ฉันพยายามใช้ CAPS ต่อท้ายทั้งหมดและย้ายไปไว้ในคอลัมน์แยกกัน ดังนั้นฉันจะได้รับแคปทั้งหมดที่มี 2-4 แคปติดต่อกัน อย่างไรก็ตามจะเป็นเพียงการออกจาก'Name'คอลัมน์ในขณะที่'Team'คอลัมน์ว่างเปล่า นี่คือรหัสของฉัน: import pandas as pd url = "https://www.espn.com/nba/stats/player/_/table/offensive/sort/avgAssists/dir/desc" df = pd.read_html(url)[0].join(pd.read_html(url)[1]) df[['Name','Team']] = df['Name'].str.split('[A-Z]{2,4}', expand=True) ฉันต้องการสิ่งนี้: print(df.head(5).to_string()) RK Name POS GP MIN PTS FGM FGA FG% 3PM 3PA 3P% FTM FTA FT% REB AST STL BLK TO DD2 TD3 PER …
11 python  regex  pandas 

7
อ่านไฟล์ของคู่“ key = value” ซ้ำ ๆ กันใน DataFrame
ฉันมีไฟล์ txt พร้อมข้อมูลในรูปแบบนี้ 3 บรรทัดแรกซ้ำไปซ้ำมา name=1 grade=A class=B name=2 grade=D class=A ฉันต้องการส่งออกข้อมูลในรูปแบบตารางตัวอย่างเช่น: name | grade | class 1 | A | B 2 | D | A ฉันกำลังพยายามตั้งค่าส่วนหัวและวนรอบข้อมูล สิ่งที่ฉันได้ลองไปแล้วคือ: def myfile(filename): with open(file1) as f: for line in f: yield line.strip().split('=',1) def pprint_df(dframe): print(tabulate(dframe, headers="keys", tablefmt="psql", showindex=False,)) #f = pd.DataFrame(myfile('file1') …

2
การระบุผู้ปกครองรูทและลูก ๆ ของพวกเขาทั้งหมดในต้นไม้
ฉันมี dataframe แพนด้าเช่นนี้: parent child parent_level child_level A B 0 1 B C 1 2 B D 1 2 X Y 0 2 X D 0 2 Y Z 2 3 นี่แสดงถึงต้นไม้ที่มีลักษณะเช่นนี้ A X / / \ B / \ /\ / \ C D Y | Z ฉันต้องการผลิตสิ่งที่มีลักษณะเช่นนี้: root …
11 python  pandas 

4
การกรอง DataFrame ในกลุ่มที่จำนวนองค์ประกอบแตกต่างจาก 1
ฉันทำงานกับ DataFrame โดยมีโครงสร้างดังต่อไปนี้: import pandas as pd df = pd.DataFrame({'group':[1,1,1,2,2,2,2,3,3,3], 'brand':['A','B','X','C','D','X','X','E','F','X']}) print(df) group brand 0 1 A 1 1 B 2 1 X 3 2 C 4 2 D 5 2 X 6 2 X 7 3 E 8 3 F 9 3 X เป้าหมายของฉันคือดูเฉพาะกลุ่มที่มีแบรนด์เดียวที่Xเชื่อมโยงกับพวกเขา เนื่องจากกลุ่มหมายเลข 2 มีการสังเกตสองแบบเท่ากับแบรนด์Xจึงควรถูกกรองออกจาก DataFrame ที่ได้ …

2
Pandas: การแบ่งส่วนข้อมูลเป็นซิกแซกตามท้องถิ่น minima-maxima
ฉันมีข้อมูลชุดเวลา กำลังสร้างข้อมูล date_rng = pd.date_range('2019-01-01', freq='s', periods=400) df = pd.DataFrame(np.random.lognormal(.005, .5,size=(len(date_rng), 3)), columns=['data1', 'data2', 'data3'], index= date_rng) s = df['data1'] ฉันต้องการสร้างเส้นซิกแซกเชื่อมต่อระหว่าง maxima ท้องถิ่นและ minima ท้องถิ่นที่ตรงตามเงื่อนไขที่บนแกน y |highest - lowest value|ของแต่ละบรรทัดซิกแซกต้องเกินเปอร์เซ็นต์ (พูด 20%) ของระยะก่อนหน้า เส้นซิกแซกและค่าที่ระบุไว้ล่วงหน้า k (พูด 1.2) ฉันสามารถหา extrema ท้องถิ่นโดยใช้รหัสนี้: # Find peaks(max). peak_indexes = signal.argrelextrema(s.values, np.greater) peak_indexes = peak_indexes[0] …

3
แปลงคอลัมน์เด็ดขาดหลายรายการ
ในชุดข้อมูลของฉันฉันมีสองคอลัมน์เด็ดขาดซึ่งฉันต้องการที่จะนับ ทั้งสองคอลัมน์มีทั้งประเทศซ้อนทับกันบางส่วน (ปรากฏในทั้งสองคอลัมน์) ฉันต้องการให้หมายเลขเดียวกันในคอลัมน์ 1 และคอลัมน์ 2 สำหรับประเทศเดียวกัน ข้อมูลของฉันดูเหมือนว่า: import pandas as pd d = {'col1': ['NL', 'BE', 'FR', 'BE'], 'col2': ['BE', 'NL', 'ES', 'ES']} df = pd.DataFrame(data=d) df ฉันกำลังแปลงข้อมูลเช่น: from sklearn.preprocessing import LabelEncoder df.apply(LabelEncoder().fit_transform) อย่างไรก็ตามสิ่งนี้ทำให้ไม่มีความแตกต่างระหว่าง FR และ ES มีวิธีง่ายๆอีกวิธีในการแสดงผลลัพธ์ต่อไปนี้? o = {'col1': [2,0,1,0], 'col2': [0,2,4,4]} output = pd.DataFrame(data=o) output

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