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

กรอบข้อมูลเป็นโครงสร้างข้อมูลแบบตาราง โดยทั่วไปจะมีข้อมูลที่แถวคือการสังเกตและคอลัมน์เป็นตัวแปรประเภทต่างๆ ในขณะที่ "data frame" หรือ "dataframe" เป็นคำที่ใช้สำหรับแนวคิดนี้ในหลายภาษา (R, Apache Spark, deedle, Maple, pandas library ใน Python และ DataFrames library ใน Julia) "table" เป็นคำที่ใช้ใน MATLAB และ SQL

4
dtypes วันที่และเวลาในแพนด้า read_csv
ฉันกำลังอ่านในไฟล์ csv ที่มีคอลัมน์วันที่และเวลาหลายคอลัมน์ ฉันต้องตั้งค่าประเภทข้อมูลเมื่ออ่านในไฟล์ แต่เวลาที่เกิดขึ้นดูเหมือนจะมีปัญหา ตัวอย่างเช่น: headers = ['col1', 'col2', 'col3', 'col4'] dtypes = ['datetime', 'datetime', 'str', 'float'] pd.read_csv(file, sep='\t', header=None, names=headers, dtype=dtypes) เมื่อรันให้ข้อผิดพลาด: TypeError: ไม่เข้าใจประเภทข้อมูล "datetime" การแปลงคอลัมน์ตามความเป็นจริงผ่าน pandas.to_datetime () ไม่ใช่ตัวเลือกที่ฉันไม่รู้ว่าคอลัมน์ใดจะเป็นวัตถุวันที่และเวลา ข้อมูลนั้นสามารถเปลี่ยนแปลงได้และมาจากสิ่งที่แจ้งรายการ dtypes ของฉัน หรือฉันพยายามโหลดไฟล์ csv ด้วย numpy.genfromtxt ตั้งค่า dtypes ในฟังก์ชั่นนั้นแล้วแปลงเป็น pandas.dataframe แต่มันกลับรวบรวมข้อมูล ความช่วยเหลือใด ๆ ที่ได้รับการชื่นชมอย่างมาก!

6
วิธีการเขียนสูตรอย่างรวบรัดโดยมีตัวแปรหลายตัวจาก data frame?
สมมติว่าฉันมีตัวแปรการตอบสนองและข้อมูลที่มีสามตัวแปรร่วม (เป็นตัวอย่างของเล่น): y = c(1,4,6) d = data.frame(x1 = c(4,-1,3), x2 = c(3,9,8), x3 = c(4,-4,-2)) ฉันต้องการปรับการถดถอยเชิงเส้นให้พอดีกับข้อมูล: fit = lm(y ~ d$x1 + d$x2 + d$y2) มีวิธีเขียนสูตรไหมโดยที่ฉันไม่ต้องเขียนความแปรปรวนร่วมแต่ละตัว ตัวอย่างเช่น fit = lm(y ~ d) (ฉันต้องการให้แต่ละตัวแปรใน data frame เป็นตัวแปรร่วม) ฉันถามเพราะจริงๆแล้วฉันมีตัวแปร 50 ตัวใน data frame ของฉันดังนั้นฉันจึงต้องการหลีกเลี่ยงการเขียนออกx1 + x2 + x3 + etcไป
127 r  dataframe  glm  lm 

10
บันทึก Dataframe เป็น csv โดยตรงไปยัง s3 Python
ฉันมี DataFrame แพนด้าที่ต้องการอัปโหลดไปยังไฟล์ CSV ใหม่ ปัญหาคือฉันไม่ต้องการบันทึกไฟล์ในเครื่องก่อนที่จะโอนไปยัง s3 มีวิธีใดเช่น to_csv สำหรับเขียน dataframe ไปยัง s3 โดยตรงหรือไม่? ฉันใช้ boto3 นี่คือสิ่งที่ฉันมีจนถึงตอนนี้: import boto3 s3 = boto3.client('s3', aws_access_key_id='key', aws_secret_access_key='secret_key') read_file = s3.get_object(Bucket, Key) df = pd.read_csv(read_file['Body']) # Make alterations to DataFrame # Then export DataFrame to CSV through direct transfer to s3

4
วิธีสร้างคอลัมน์ทูเพิลจากสองคอลัมน์ใน Pandas
ฉันมี Pandas DataFrame และฉันต้องการรวมคอลัมน์ 'lat' และ 'long' เพื่อสร้างทูเพิล <class 'pandas.core.frame.DataFrame'> Int64Index: 205482 entries, 0 to 209018 Data columns: Month 205482 non-null values Reported by 205482 non-null values Falls within 205482 non-null values Easting 205482 non-null values Northing 205482 non-null values Location 205482 non-null values Crime type 205482 non-null values long …

2
จะสร้าง DataFrame ของจำนวนเต็มแบบสุ่มด้วย Pandas ได้อย่างไร?
ผมรู้ว่าถ้าผมใช้randn, import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD')) ให้สิ่งที่ฉันกำลังมองหา แต่มีองค์ประกอบจากการแจกแจงแบบปกติ แต่ถ้าฉันแค่ต้องการจำนวนเต็มแบบสุ่มล่ะ? randintทำงานโดยการให้ช่วง แต่ไม่ใช่อาร์เรย์เหมือนที่randnทำ แล้วจะทำอย่างไรกับจำนวนเต็มสุ่มระหว่างบางช่วง

12
data.frame แถวไปยังรายการ
ฉันมี data.frame ซึ่งฉันต้องการแปลงเป็นรายการตามแถวซึ่งหมายความว่าแต่ละแถวจะสอดคล้องกับองค์ประกอบรายการของมันเอง กล่าวอีกนัยหนึ่งคือฉันต้องการรายการที่มีความยาวเท่าที่ data.frame มีแถว จนถึงตอนนี้ฉันได้แก้ไขปัญหานี้แล้วในลักษณะต่อไปนี้ แต่ฉันสงสัยว่ามีวิธีที่ดีกว่าในการแก้ไขปัญหานี้หรือไม่ xy.df <- data.frame(x = runif(10), y = runif(10)) # pre-allocate a list and fill it with a loop xy.list <- vector("list", nrow(xy.df)) for (i in 1:nrow(xy.df)) { xy.list[[i]] <- xy.df[i,] }
123 list  r  dataframe 

3
ค้นหาชื่อคอลัมน์ที่มีค่าสูงสุดสำหรับแต่ละแถว
ฉันมี DataFrame แบบนี้: In [7]: frame.head() Out[7]: Communications and Search Business General Lifestyle 0 0.745763 0.050847 0.118644 0.084746 0 0.333333 0.000000 0.583333 0.083333 0 0.617021 0.042553 0.297872 0.042553 0 0.435897 0.000000 0.410256 0.153846 0 0.358974 0.076923 0.410256 0.153846 ที่นี่ฉันต้องการถามวิธีรับชื่อคอลัมน์ที่มีค่าสูงสุดสำหรับแต่ละแถวผลลัพธ์ที่ต้องการจะเป็นดังนี้: In [7]: frame.head() Out[7]: Communications and Search Business General Lifestyle Max …
123 python  pandas  dataframe  max 

9
จะเพิ่มหลายคอลัมน์ในฐานข้อมูลแพนด้าในงานเดียวได้อย่างไร
ฉันยังใหม่กับแพนด้าและพยายามหาวิธีเพิ่มหลายคอลัมน์ให้แพนด้าพร้อมกัน ขอความช่วยเหลือใด ๆ ที่นี่ ตามหลักการแล้วฉันต้องการทำสิ่งนี้ในขั้นตอนเดียวแทนที่จะทำซ้ำหลายขั้นตอน ... import pandas as pd df = {'col_1': [0, 1, 2, 3], 'col_2': [4, 5, 6, 7]} df = pd.DataFrame(df) df[[ 'column_new_1', 'column_new_2','column_new_3']] = [np.nan, 'dogs',3] #thought this would work here...
123 python  pandas  dataframe 

8
เลือกคอลัมน์เฟรมข้อมูลแบบไดนามิกโดยใช้ $ และค่าอักขระ
ฉันมีเวกเตอร์ของชื่อคอลัมน์ที่แตกต่างกันและฉันต้องการให้สามารถวนซ้ำแต่ละคอลัมน์เพื่อแยกคอลัมน์นั้นออกจาก data.frame ตัวอย่างเช่นพิจารณาข้อมูลชุดและบางชื่อตัวแปรที่เก็บไว้ในเวกเตอร์ของตัวละครmtcars colsเมื่อฉันพยายามเลือกตัวแปรจากการmtcarsใช้ชุดย่อยแบบไดนามิกcolsจากงานเหล่านี้ cols <- c("mpg", "cyl", "am") col <- cols[1] col # [1] "mpg" mtcars$col # NULL mtcars$cols[1] # NULL ฉันจะรับสิ่งเหล่านี้กลับค่าเดียวกับ mtcars$mpg นอกจากนี้ฉันจะวนซ้ำคอลัมน์ทั้งหมดcolsเพื่อรับค่าในลูปบางประเภทได้อย่างไร for(x in seq_along(cols)) { value <- mtcars[ order(mtcars$cols[x]), ] }
122 r  dataframe  r-faq 

7
วิธีผนวกแถวเข้ากับกรอบข้อมูล R
ฉันได้ดู StackOverflow แล้ว แต่ฉันไม่พบวิธีแก้ปัญหาเฉพาะสำหรับปัญหาของฉันซึ่งเกี่ยวข้องกับการต่อท้ายแถวเข้ากับเฟรมข้อมูล R ฉันกำลังเริ่มต้นกรอบข้อมูล 2 คอลัมน์ที่ว่างเปล่าดังนี้ df = data.frame(x = numeric(), y = character()) จากนั้นเป้าหมายของฉันคือการวนซ้ำตามรายการค่าและในการวนซ้ำแต่ละครั้งจะเพิ่มค่าต่อท้ายรายการ ฉันเริ่มต้นด้วยรหัสต่อไปนี้ for (i in 1:10) { df$x = rbind(df$x, i) df$y = rbind(df$y, toString(i)) } ฉันยังพยายามฟังก์ชั่นc, appendและmergeไม่ประสบความสำเร็จ โปรดแจ้งให้เราทราบหากคุณมีข้อเสนอแนะ
121 r  merge  append  dataframe  rows 

3
การรับดัชนีของแถวในแพนด้าใช้ฟังก์ชัน
ฉันกำลังพยายามเข้าถึงดัชนีของแถวในฟังก์ชั่นที่นำไปใช้ทั่วทั้งรายการDataFrameใน Pandas ฉันมีสิ่งนี้: df = pandas.DataFrame([[1,2,3],[4,5,6]], columns=['a','b','c']) >>> df a b c 0 1 2 3 1 4 5 6 และฉันจะกำหนดฟังก์ชันที่เข้าถึงองค์ประกอบด้วยแถวที่กำหนด def rowFunc(row): return row['a'] + row['b'] * row['c'] ฉันสามารถใช้มันได้ดังนี้: df['d'] = df.apply(rowFunc, axis=1) >>> df a b c d 0 1 2 3 7 1 4 5 6 34 …
121 python  pandas  dataframe 

14
นับจำนวนแถวในแต่ละกลุ่ม
ฉันมี dataframe และฉันต้องการนับจำนวนแถวในแต่ละกลุ่ม ฉันใช้aggregateฟังก์ชันเพื่อสรุปข้อมูลดังต่อไปนี้: df2 <- aggregate(x ~ Year + Month, data = df1, sum) ตอนนี้ผมอยากจะนับข้อสังเกต FUNแต่ไม่สามารถดูเหมือนจะหาข้อโต้แย้งที่เหมาะสมสำหรับ โดยสัญชาตญาณฉันคิดว่ามันจะเป็นดังนี้: df2 <- aggregate(x ~ Year + Month, data = df1, count) แต่โชคไม่ดี ความคิดใด ๆ ? ข้อมูลของเล่นบางส่วน: set.seed(2) df1 <- data.frame(x = 1:20, Year = sample(2012:2014, 20, replace = TRUE), Month = sample(month.abb[1:3], …
121 r  dataframe  aggregate  r-faq 

11
ค้นหาค่าสูงสุดของคอลัมน์และส่งคืนค่าแถวที่เกี่ยวข้องโดยใช้ Pandas
การใช้ Python Pandas ฉันพยายามค้นหาCountry& Placeด้วยค่าสูงสุด สิ่งนี้ส่งคืนค่าสูงสุด: data.groupby(['Country','Place'])['Value'].max() แต่วิธีการที่ฉันจะได้รับที่สอดคล้องกันCountryและPlaceชื่อ?
121 python  pandas  dataframe  max 

5
ส่งชื่อคอลัมน์ data.frame ไปยังฟังก์ชัน
ฉันกำลังพยายามเขียนฟังก์ชันเพื่อยอมรับ data.frame ( x) และ a columnจากมัน ฟังก์ชันทำการคำนวณบางอย่างบน x และส่งคืน data.frame อื่นในภายหลัง ฉันติดอยู่กับวิธีการปฏิบัติที่ดีที่สุดในการส่งชื่อคอลัมน์ไปยังฟังก์ชัน สองตัวอย่างน้อยที่สุดfun1และfun2ด้านล่างให้ผลลัพธ์ที่ต้องการสามารถดำเนินการได้x$columnโดยใช้max()เป็นตัวอย่าง อย่างไรก็ตามทั้งสองต้องพึ่งพาสิ่งที่ดูเหมือน (อย่างน้อยก็สำหรับฉัน) ไม่สง่างาม โทรหาsubstitute()และอาจเป็นไปได้eval() จำเป็นต้องส่งชื่อคอลัมน์เป็นเวกเตอร์อักขระ fun1 <- function(x, column){ do.call("max", list(substitute(x[a], list(a = column)))) } fun2 <- function(x, column){ max(eval((substitute(x[a], list(a = column))))) } df <- data.frame(B = rnorm(10)) fun1(df, "B") fun2(df, "B") ฉันต้องการเรียกใช้ฟังก์ชันดังfun(df, B)ตัวอย่างเช่น ตัวเลือกอื่น …
119 r  dataframe  r-faq 

1
Pandas ใช้กฎอะไรในการสร้างมุมมองเทียบกับสำเนา
ฉันสับสนเกี่ยวกับกฎที่ Pandas ใช้เมื่อตัดสินใจว่าการเลือกจาก dataframe เป็นสำเนาของ dataframe ดั้งเดิมหรือมุมมองจากต้นฉบับ ตัวอย่างเช่นถ้าฉันมี df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9)) ฉันเข้าใจว่าqueryส่งคืนสำเนาเพื่อให้เป็นเช่นนั้น foo = df.query('2 < index <= 5') foo.loc[:,'E'] = 40 จะไม่มีผลกับ dataframe ดั้งเดิม, df. ฉันยังเข้าใจว่าสเกลาร์หรือส่วนที่ตั้งชื่อส่งคืนมุมมองดังนั้นการมอบหมายให้กับสิ่งเหล่านี้เช่น df.iloc[3] = 70 หรือ df.ix[1,'B':'E'] = 222 จะเปลี่ยนdfไป แต่ฉันหลงทางเมื่อต้องเจอกับคดีที่ซับซ้อนกว่านี้ ตัวอย่างเช่น, df[df.C <= df.B] = 7654321 การเปลี่ยนแปลงdfแต่ df[df.C <= df.B].ix[:,'B':'E'] ไม่. มีกฎง่ายๆไหมที่นุ่นใช้ว่าฉันหายไป? …

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