- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我从 .csv 文件中读取了一个 DataFrame,其中包含以下列:
columns = ['Year', 'month', 'column1', 'column2','column3', 'column4', 'column5', 'column6', 'column7', 'column8','Value']
dataframe 有 116408 行,但在 df = df.drop_duplicates()
之后它现在有 98829(我不知道为什么它首先有重复项)
我需要像这样拆开它:
1 2 3 ....
2016 2017 2018 2016 2017 2018 2016 2017 2018 ....
column1 column2 .......
a1 a2 ... 24 12 20 22 15 21 12 11 13 ...
b1 b2 ... 18 11 21 21 11 31 14 41 14 ...
到目前为止,我已经尝试过:
df = df.set_index(columns[:-1], append=True)
df = df.unstack(level=[0,1])
但这需要永远。 (如果我删除 append
会出现此错误:ValueError: Index contains duplicate entries, cannot reshape
)
有没有人有其他选择或知道为什么要花这么长时间?我还没有看到结果,也没有看到任何错误。
最佳答案
我相信您拆错了层级。因为你在设置索引时有 append=True
,所以你的新索引中的第一个值就是它原来的值(你没有指出这个索引值是什么,所以我只是假设一个连续的范围从零开始)。接下来的两个级别将是 Year
和 month
。
所以,试试这个来获得你想要的输出:
df.unstack(level=[1, 2])
np.random.seed(0)
columns = ['Year', 'month', 'column1', 'column2', 'column3', 'column4', 'column5', 'column6', 'column7', 'column8','Value']
df = pd.DataFrame(np.random.randn(99, 11), columns=columns)
df.loc[:, 'Year'] = [2016, 2017, 2018] * 33
df.loc[:, 'month'] = [1, 2, 3] * 33
>>> df.set_index(columns[:-1], append=True).unstack(level=[1,2]).head()
Value \
Year 2016
month 1
column1 column2 column3 column4 column5 column6 column7 column8
0 0.978738 2.240893 1.867558 -0.977278 0.950088 -0.151357 -0.103219 0.410599 0.144044
1 0.121675 0.443863 0.333674 1.494079 -0.205158 0.313068 -0.854096 -2.552990 NaN
2 2.269755 -1.454366 0.045759 -0.187184 1.532779 1.469359 0.154947 0.378163 NaN
3 0.156349 1.230291 1.202380 -0.387327 -0.302303 -1.048553 -1.420018 -1.706270 1.950775
4 -1.252795 0.777490 -1.613898 -0.212740 -0.895467 0.386902 -0.510805 -1.180632 NaN
\
Year 2017
month 2
column1 column2 column3 column4 column5 column6 column7 column8
0 0.978738 2.240893 1.867558 -0.977278 0.950088 -0.151357 -0.103219 0.410599 NaN
1 0.121675 0.443863 0.333674 1.494079 -0.205158 0.313068 -0.854096 -2.552990 0.653619
2 2.269755 -1.454366 0.045759 -0.187184 1.532779 1.469359 0.154947 0.378163 NaN
3 0.156349 1.230291 1.202380 -0.387327 -0.302303 -1.048553 -1.420018 -1.706270 NaN
4 -1.252795 0.777490 -1.613898 -0.212740 -0.895467 0.386902 -0.510805 -1.180632 -0.028182
Year 2018
month 3
column1 column2 column3 column4 column5 column6 column7 column8
0 0.978738 2.240893 1.867558 -0.977278 0.950088 -0.151357 -0.103219 0.410599 NaN
1 0.121675 0.443863 0.333674 1.494079 -0.205158 0.313068 -0.854096 -2.552990 NaN
2 2.269755 -1.454366 0.045759 -0.187184 1.532779 1.469359 0.154947 0.378163 -0.887786
3 0.156349 1.230291 1.202380 -0.387327 -0.302303 -1.048553 -1.420018 -1.706270 NaN
4 -1.252795 0.777490 -1.613898 -0.212740 -0.895467 0.386902 -0.510805 -1.180632 NaN
关于 python Pandas : multi-index unstack taking forever,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46592104/
我有一个代表每个年龄段的人口(M,F)的集合。 为了通过时间来预测人口,我必须首先对女性进行计算,以便我可以根据男性出生率的统计常数来计算新出生的男性和女性的百分比。 也就是说,我有一个包含每岁男性和
我正在尝试从队列中获取 n 条消息(使用 langohr)。我有一个工作版本,但我想知道是否有更好的 clojurist 方法来做到这一点: (def not-nil? (complement nil
我有这些结果用于分析一个简单的查询,该查询不会从少于 200 条记录的表中返回超过 150 条记录,因为我有一个存储最新值的表,而其他字段是数据的 FK . 更新:稍后查看同一查询的新结果。该网站未公
我正在使用 .Take() 来获取固定数量的结果。 获取 TotalCountBeforeTake 的最佳方法是什么(即好像我没有使用 .Take())? 我可以在不运行查询两次的情况下获得 Tota
我有一个 BatchConfigurable 类 public class BatchConfigurable() {} 我正在尝试为其编写一个包装器。这将是另一个类,它采用此类或任何扩展 Batch
byte[] result = memStream.ToArray(); memStream.Close(); byte[] temp = r
很简单的问题。我有一个值列表,我想用空值填充这些值,这样我总是会返回 X 个项目。 List list = new List() { 10, 20, 30 }; IEnumerable values
我正在构建一个购物车,并且我使用了一个购物车服务,在该服务中我将数量分配给产品/将产品添加到购物车。除了使用 take 获取可观察项 $ 的第一个实例之外,还有其他方法吗? 我正在正确导入 take
这是欧拉计划的问题 8。 我试图通过数字数组foreach,每次跳过最后一个数字并拉接下来的13个相邻数字数组。 我的代码: for(int x = 0; x product) {
我有 3 个 div 元素,一个是父元素,另外两个是子元素: dinesh pathak and their css are: #table {
我在 Hudson 上发现了异常行为。Hudson 作业大约需要 25 分钟,而当我在本地运行相同的作业时,需要 9 分钟。我在这里缺少什么? 我增加了 JAVA_OPTS、MAVEN_OPTS,甚至
let a = [1;2;3;] for i in (a |> Seq.take 10) do Console.WriteLine(i) for i in (a |> Seq.take 100) do
我正在尝试编写一些 LINQ To SQL 代码来生成类似 SQL 的代码 SELECT t.Name, g.Name FROM Theme t INNER JOIN ( SELECT TOP
给定这样的设置.. class Product { int Cost; // other properties unimportant } var products = new List
我有一个 List 类型的元素 public class FriendList { public List friends { get; set; } // List
给定以下 LINQ 语句,哪个更有效? 一个: public List GetLatestLogEntries() { var logEntries = from entry in db.Lo
我只是在尝试新的 kotlin 语言。我遇到了生成无限列表的序列。我生成了一个序列并尝试打印前 10 个元素。但是下面的代码没有打印任何东西: fun main(args: Array) {
我见过 sagas 以 3 种方式监听 Action : 1。 while(true) take() function* onUserDetailsRequest() { while(true)
假设我有一些神奇的分页黑盒类,它使用 pageIndex 和 pageSize 检索数据,如下所示: public class PaginatedList { // ... // Ch
我有两个 git 分支 b' 和 b" 具有完全相同的 SHA-1 和因此内容。我提交 b ' 并在提交时,我使用 -x 应用 cherry-pick 而不是 merge 或 rebase单个提交到我
我是一名优秀的程序员,十分优秀!