我有一个像这样的pandas数据框:
A | B | C | index
-----------------
a1 | b1 | c1 | 1
a2 | b2 | c2 | 2
a3 | b3 | c3 | 3
a4 | b4 | c4 | 4
a5 | b5 | c5 | 5
这类似于索引排序的时间序列(如果你愿意,则为日期列)
我的目标是创建n个数据帧,每个数据帧按顺序包含3个条目。所以解决方案将在上面的例子中如下:
DF1)
A | B | C | index
-----------------
a1 | b1 | c1 | 1
a2 | b2 | c2 | 2
a3 | b3 | c3 | 3
DF2)
A | B | C | index
-----------------
a2 | b2 | c2 | 2
a3 | b3 | c3 | 3
a4 | b4 | c4 | 4
DF3)
A | B | C | index
-----------------
a3 | b3 | c3 | 3
a4 | b4 | c4 | 4
a5 | b5 | c5 | 5
我怎么能在python 3.5和pandas中做到这一点?在其他语言中,我可能需要一个for循环并在范围内迭代i(1,len(df)-2),但我猜这里有更多的pythonic解决方案。
提前感谢您的帮助!! : - )
答案 0 :(得分:3)
仍在使用for循环:
df2 <- df1[,1:4]
library(data.table)
df2 <- data.table(t(df2), colnam = colnames(df2), df = "df2")
df2 <- melt(df2, id.vars = c("colnam", "df"))
df2[, sd := t(df1[,5:8])]
ggplot(df2, aes(x = colnam, y = value, fill = df, ymax = value + sd, ymin = value - sd)) +
geom_bar(position = "dodge", stat = "identity") +
facet_wrap(~variable, ncol = 2, scales = "free_y") +
geom_errorbar(position = position_dodge(width = 0.9), width=0.2)