這是這個問題的后續,我從 CDS 下載了一個檔案,并rvest使用以下腳本進行了提取:
library(rvest)
download.file("https://cdsarc.cds.unistra.fr/viz-bin/nph-Cat/html?J/MNRAS/495/1706/subaru.dat.gz", "subaru.dat.gz")
x <- rvest::read_html("subaru.dat.gz")
y <- rvest::html_table(x)
write.csv(y, file = 'subaru_fixed.csv')
生成的 csv 檔案包含幾個character-type 列,其中包含兩個由空格分隔的浮點數(表示測量值及其誤差)。理想情況下,我想將這兩個浮點數分開并將錯誤放在他們自己的列中,但我可以完全忽略第二個浮點數。例如,
Bmag (e) | Vmag (e) | rmag (e)
21.6219 0.0015 |24.0 0.012 | 23.3316 0.0089
變成
Bmag | Vmag | rmag
21.6219 | 24.0 | 23.3316
我想有一些方法可以使用 Python 來做到這一點。任何人都可以幫忙嗎?
uj5u.com熱心網友回復:
您可以tidyr::separate在撰寫 CSV 之前使用。可能有一個聰明的功能可以一次將單獨應用于多個列,但這里有一種方法使用 3 個分隔來處理 3 個感興趣的列。
library(tidyr)
# example data
df1 <- data.frame(`Bmag (e)` = "21.6219 0.0015",
`Vmag (e)` = "24.0 0.012",
`rmag (e)` = "23.3316 0.0089",
check.names = FALSE)
df1 %>%
separate(`Bmag (e)`,
into = c("Bmag", "Bmag_e"),
sep = " ") %>%
separate(`Vmag (e)`,
into = c("Vmag", "Vmag_e"),
sep = " ") %>%
separate(`rmag (e)`,
into = c("rmag", "rmag_e"),
sep = " ")
結果:
Bmag Bmag_e Vmag Vmag_e rmag rmag_e
1 21.6219 0.0015 24.0 0.012 23.3316 0.0089
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408912.html
標籤:
上一篇:組合熊貓資料框中的重復行
