- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想将数据框中的数据排列成多个数据框或组。输入数据为
id channel path
15 direct a1
15 direct a2
15 direct a3
15 direct a4
213 paid b2
213 paid b1
2222 direct as25
2222 direct dw46
2222 direct 32q
3111 paid d32a
3111 paid 23ff
3111 paid www32
3111 paid 2d2
所需的输出应该是这样的
id channel p1 p2
213 paid b2 b2
id channel p1 p2 p3
2222 direct as25 dw46 dw46
id channel p1 p2 p3 p4
15 direct a1 a2 a3 a4
3111 paid d32a 23ff www32 2d2
请告诉我如何实现它。谢谢
最佳答案
我认为您可以首先通过 cumcount
创建辅助列 cols
然后pivot_table
。然后你需要找到 notnull
的长度列(减去前 2 列)和 groupby
按此长度
。最后dropna
每组中的列:
df['cols'] = 'p' + (df.groupby('id')['id'].cumcount() + 1).astype(str)
df1 = df.pivot_table(index=['id', 'channel'],
columns='cols',
values='path',
aggfunc='first').reset_index().rename_axis(None, axis=1)
print df1
id channel p1 p2 p3 p4
0 15 direct a1 a2 a3 a4
1 213 paid b2 b1 None None
2 2222 direct as25 dw46 32q None
3 3111 paid d32a 23ff www32 2d2
print df1.apply(lambda x: x.notnull().sum() - 2 , axis=1)
0 4
1 2
2 3
3 4
dtype: int64
for i, g in df1.groupby(df1.apply(lambda x: x.notnull().sum() - 2 , axis=1)):
print i
print g.dropna(axis=1)
2
id channel p1 p2
1 213 paid b2 b1
3
id channel p1 p2 p3
2 2222 direct as25 dw46 32q
4
id channel p1 p2 p3 p4
0 15 direct a1 a2 a3 a4
3 3111 paid d32a 23ff www32 2d2
为了存储,您可以使用DataFrames
的字典
:
dfs={i: g.dropna(axis=1)
for i, g in df1.groupby(df1.apply(lambda x: x.notnull().sum() - 2 , axis=1))}
#select DataFrame with len=2
print dfs[2]
id channel p1 p2
1 213 paid b2 b1
#select DataFrame with len=3
print dfs[3]
id channel p1 p2 p3
2 2222 direct as25 dw46 32q
关于python - 在 pandas 中切片和排列数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36709837/
简而言之: 我怎样才能切片?也就是说,能够指定我想从多个索引(例如 y = x[(2, 5, 11)] )中提取,而不仅仅是单个索引(例如 y = x[2] )。 简单示例 : 说我有这个数据: d
是否可以在 F# 中对 Array2D 进行切片? 说,let tmp =Array2D.init 100 100 (fun x y -> x * 100 + y) 如何从 tmp 中检索某些列或某些
例如,我希望文本仅显示“此处”,但它不起作用。文本经常变化,但我需要的单词保持在固定位置。我想访问该词。 我做错了什么? function myFunction() { var x = doc
当尝试使用spring的分页或切片来迭代非常大的mongodb集合时,程序运行正常,但在某些时候下一页/切片为空,并且在调试时出现“包含未知实例的页面/切片”消息. 这是代码示例: do { Pa
有人能给我一个关于如何分割 ListView 的例子吗?我正在使用 SimpleCursorAdapter 在 ListView 中显示数据.. 我的代码是这样的。 private WordDbAda
这个问题在这里已经有了答案: C++ slicing causing leak / undefined behavior / crash (3 个答案) 关闭 8 年前。 如果我有如下代码: cla
这个问题在这里已经有了答案: Understanding slicing (38 个答案) 关闭 5 年前。 我目前有 500 行数据。我想使用前五十行,然后跳过 50 行,依此类推。我该如何继续这
为什么对一行或一列进行切片会产生“无量纲数组”?例如: import numpy as np arr = np.zeros((10,10)) print arr.shape # (10, 10) 但是
我有以下 pandas 数据框: Shortcut_Dimension_4_Code Stage_Code 10225003 2 8225003
如何通过数组为 ruby 中的散列创建切片,如下所示: info = { :key1 => "Lorem", :key2 => "something...", :key3 => "
这个问题在这里已经有了答案: regex to get all text outside of brackets (4 个答案) 关闭 5 年前。 我正在编写的这个程序接收到一个大小不同的字符串,其
我尝试使用 tf.Tensor.getitem 对张量进行切片功能如下: indices = [0, 5] data[:,:,indices] 但是我得到以下错误: TypeError: can on
这个问题在这里已经有了答案: Can I create a "view" on a Python list? (10 个答案) 关闭 7 年前。 有没有一种方法可以在 Python 3 中创建序列的
我想弄清楚如何从多维数组中获取单个维度(为了论证,假设它是二维的),我有一个多维数组: double[,] d = new double[,] { { 1, 2, 3, 4, 5 }, { 5, 4,
我有一个 std::vector。我想创建代表该 vector 切片的迭代器。我该怎么做?在伪 C++ 中: class InterestingType; void doSomething(slice
写在前面 前面的文章介绍了Go的一些基本类型,本文开始涉及Go的一些容器类型,它们都是可以包含多个元素的数据结构,如数组、切片、map 数组 数组是具有相同类型且长度固定的一组元素集合,定义的格式:v
给定一个 numpy 数组和一个 __getitem__ 类型的索引,是否有一种惯用的方法来获取数组的相应切片,总是返回一个数组而不是标量? 有效索引的示例包括:int、slice、省略号或上述的元组
我创建了一个继承自 pandas.DataFrame 的类。在此类中添加了元数据(不是添加到列中,而是添加到类实例中): class MeasurementPoint(pandas.DataFrame
我想在空间上剪切视频以生成 N x M 个文件。 例如,我想把 test.video 拆分成 NxM 的瓦片? Video tiles 最佳答案 您可以使用 ffmpeg 及其 crop filter
这是一个示例代码。比如我想拉德国 在页面加载时切片。在这段代码中,它拉取第一个切片。 无功图; var 传说; var chartData = [{ 国家:“立陶宛”, 值:260}, { 国家:“爱
我是一名优秀的程序员,十分优秀!