我有一个熊猫数据框,有许多标记列。例如:
import numpy as np
import pandas as pd
cols = ['lat', 'long', 'foo', 'bar', 'year', 'month', 'day', 'hour', 'min', 'sec']
df = pd.DataFrame(np.random.random((10, 10)), columns=cols)
我想用多个范围切片这个数据帧。例如:
df.loc[:, ('lat':'long', 'year':'day')]
但这似乎是不可能的。有没有办法做到这一点?
这个问题与使用Pandas和Pandas Dataframe选择多个不连续列/切片切片多列范围有关,但我希望使用列名而不是索引切片<代码>np。r 似乎不支持字符串范围,只支持数字范围。
按多个标签范围切片更具挑战性且支持较少,因此让我们尝试按索引范围切片:
loc = df.columns.get_loc
df.iloc[:, np.r_[loc('lat'):loc('long')+1, loc('year'):loc('day')+1]]
lat long year month day
0 0.218559 0.418508 0.345499 0.166776 0.878559
1 0.572760 0.898007 0.702427 0.386477 0.694439
2 0.803740 0.983359 0.945517 0.649540 0.860832
3 0.873401 0.906277 0.463535 0.610538 0.496282
4 0.187359 0.687674 0.039455 0.647117 0.638054
5 0.169531 0.794548 0.352917 0.484498 0.697736
6 0.022867 0.375123 0.444112 0.498140 0.414346
7 0.729086 0.415919 0.430047 0.734766 0.556216
8 0.138769 0.614932 0.109311 0.539576 0.289299
9 0.037969 0.500108 0.758036 0.262273 0.100859
按位置编制索引时,我需要将1
添加到正确的索引中,因为它是右排他索引。
另一个选项是切片各个部分并连接:
ranges = [('lat', 'long'), ('year', 'day')]
pd.concat([df.loc[:, i:j] for i, j in ranges], axis=1)
lat long year month day
0 0.218559 0.418508 0.345499 0.166776 0.878559
1 0.572760 0.898007 0.702427 0.386477 0.694439
2 0.803740 0.983359 0.945517 0.649540 0.860832
3 0.873401 0.906277 0.463535 0.610538 0.496282
4 0.187359 0.687674 0.039455 0.647117 0.638054
5 0.169531 0.794548 0.352917 0.484498 0.697736
6 0.022867 0.375123 0.444112 0.498140 0.414346
7 0.729086 0.415919 0.430047 0.734766 0.556216
8 0.138769 0.614932 0.109311 0.539576 0.289299
9 0.037969 0.500108 0.758036 0.262273 0.100859
给定任何熊猫数据帧。我想选择列A, B和F: Z 我已经尝试过了但是没有成功。请告诉我怎么做。
问题内容: 用更多索引范围(例如by和)对数据帧进行切片的pythonic方法是什么? 我想要一个更优雅的方式: 结果: 像这样的东西会更优雅: 问题答案: 您可以使用numpy的“切片技巧”: 给出:
我有一个数据框架,看起来像这样: 我想对数据帧进行切片,以便结果包含所有以<code>foo 获得此结果的一种方法是 但这感觉像是一个非常繁琐的方法,必须有一个更“pythonic”的方法..
我有一个多索引数据框,看起来像 uid tid文本 abc x t1 bcd y t2 uid 和 tid 是索引。我有一个 uid 列表,并希望获取与该列表中的 uid 相对应的行,但保留第 2 级索引值 (tid)。我想在不运行任何显式循环的情况下执行此操作。这可能吗?
我想按多个列对熊猫数据框进行分组。每个Row都有一个整数、一个Name和一个额外的数值。我希望最终的Dataframe包含Name具有最高整数的每一行。 通过分组数据帧,只有第0行应该消失。第3行和第4行仍应包括在数据框中。
因素数据框架: 上表用于返回基于两个值的系数,即“代码”和特定数字。提供了一个特定值,如5,302,253,8000,如果该值介于最小值和最大值之间,则返回因子。 例如: < li>A,355 = 3 B,9000 = 8 我有一个单独的表,其中有几千行需要分配因子的值。 数据帧: 如何使用 pandas 工具集返回所需因子并将相关因子追加为新列?