ard*_*aar 6 python r dataframe pandas dplyr
我正在尝试重新排列 DataFrame 中的列,首先放置几列,然后放置所有其他列。
使用 R's dplyr
,这看起来像:
library(dplyr)
df = tibble(col1 = c("a", "b", "c"),
id = c(1, 2, 3),
col2 = c(2, 4, 6),
date = c("1 Feb", "2 Feb", "3 Feb"))
df2 = select(df,
id, date, everything())
Run Code Online (Sandbox Code Playgroud)
简单。使用 Python's pandas
,这是我尝试过的:
import pandas as pd
df = pd.DataFrame({
"col1": ["a", "b", "c"],
"id": [1, 2, 3],
"col2": [2, 4, 6],
"date": ["1 Feb", "2 Feb", "3 Feb"]
})
# using sets
cols = df.columns.tolist()
cols_1st = {"id", "date"}
cols = set(cols) - cols_1st
cols = list(cols_1st) + list(cols)
# wrong column order
df2 = df[cols]
# using lists
cols = df.columns.tolist()
cols_1st = ["id", "date"]
cols = [c for c in cols if c not in cols_1st]
cols = cols_1st + cols
# right column order, but is there a better way?
df3 = df[cols]
Run Code Online (Sandbox Code Playgroud)
这种pandas
方式更乏味,但我对此很陌生。有没有更好的办法?
您可以使用df.drop
:
>>> df = pd.DataFrame({
"col1": ["a", "b", "c"],
"id": [1, 2, 3],
"col2": [2, 4, 6],
"date": ["1 Feb", "2 Feb", "3 Feb"]
})
>>> df
col1 id col2 date
0 a 1 2 1 Feb
1 b 2 4 2 Feb
2 c 3 6 3 Feb
>>> cols_1st = ["id", "date"]
>>> df[cols_1st + list(df.drop(cols_1st, 1))]
id date col1 col2
0 1 1 Feb a 2
1 2 2 Feb b 4
2 3 3 Feb c 6
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
350 次 |
最近记录: |