LEFT
| RIGHT
| FULL
)(INNER
| OUTER
)连接?merge
?join
?concat
?update
?谁?什么?为什么?!... 和更多.我已经看到了这些反复出现的问题,询问了pandas合并功能的各个方面.今天关于合并及其各种用例的大部分信息在几十个措辞严厉,不可搜索的帖子中都是分散的.这里的目的是为后代整理一些更重要的观点.
这个QnA应该是关于常见熊猫习语的一系列有用的用户指南的下一部分(参见关于转动的这篇文章,以及关于连接的这篇文章,我将在稍后介绍).
请注意,这篇文章并不是文档的替代品,所以请阅读它!一些例子来自那里.
关于如何定义python轴以及它们是否引用DataFrame的行或列,我一直很困惑.请考虑以下代码:
>>> df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], columns=["col1", "col2", "col3", "col4"])
>>> df
col1 col2 col3 col4
0 1 1 1 1
1 2 2 2 2
2 3 3 3 3
Run Code Online (Sandbox Code Playgroud)
因此,如果我们打电话df.mean(axis=1)
,我们将获得跨行的平均值:
>>> df.mean(axis=1)
0 1
1 2
2 3
Run Code Online (Sandbox Code Playgroud)
但是,如果我们调用df.drop(name, axis=1)
,我们实际上会删除一列而不是一行:
>>> df.drop("col4", axis=1)
col1 col2 col3
0 1 1 1
1 2 2 2
2 3 3 3
Run Code Online (Sandbox Code Playgroud)
有人能帮助我理解pandas/numpy/scipy中"轴"的含义吗?
旁注,DataFrame.mean
可能被定义错了.它在文档中说, …
我正在使用Pythons NumPy
模块进行编码.如果将3D空间中的点的坐标描述为[1, 2, 1]
,则不是三维,三轴,三等级?或者,如果这是一个维度,那么它不应该是点(复数),而不是点?
这是文档:
在Numpy中,尺寸称为轴.轴数是等级.例如,3D空间[1,2,1]中的点的坐标是等级1的数组,因为它具有一个轴.该轴的长度为3.
我有一些数据,当我导入它时,我得到以下不需要的列我正在寻找一种简单的方法来删除所有这些
'Unnamed: 24', 'Unnamed: 25', 'Unnamed: 26', 'Unnamed: 27',
'Unnamed: 28', 'Unnamed: 29', 'Unnamed: 30', 'Unnamed: 31',
'Unnamed: 32', 'Unnamed: 33', 'Unnamed: 34', 'Unnamed: 35',
'Unnamed: 36', 'Unnamed: 37', 'Unnamed: 38', 'Unnamed: 39',
'Unnamed: 40', 'Unnamed: 41', 'Unnamed: 42', 'Unnamed: 43',
'Unnamed: 44', 'Unnamed: 45', 'Unnamed: 46', 'Unnamed: 47',
'Unnamed: 48', 'Unnamed: 49', 'Unnamed: 50', 'Unnamed: 51',
'Unnamed: 52', 'Unnamed: 53', 'Unnamed: 54', 'Unnamed: 55',
'Unnamed: 56', 'Unnamed: 57', 'Unnamed: 58', 'Unnamed: 59',
'Unnamed: 60'
Run Code Online (Sandbox Code Playgroud)
它们被0索引编入索引,所以我尝试了类似的东西
df.drop(df.columns[[22, 23, 24, 25, …
Run Code Online (Sandbox Code Playgroud) 从Numpy的教程中,轴可以用整数编制索引,就像0
用于列,1
用于行,但我不明白为什么它们以这种方式编入索引?在处理多维数组时,如何计算每个轴的索引?
有人能解释axis
NumPy中的参数究竟是什么吗?
我非常困惑.
我正在尝试使用该功能 myArray.sum(axis=num)
起初我认为如果数组本身是3维,axis=0
将返回三个元素,由同一位置中所有嵌套项的总和组成.如果每个维度包含五个维度,我希望axis=1
返回五个项目的结果,依此类推.
然而事实并非如此,文档并没有很好地帮助我(他们使用3x3x3阵列,因此很难说出发生了什么)
这是我做的:
>>> e
array([[[1, 0],
[0, 0]],
[[1, 1],
[1, 0]],
[[1, 0],
[0, 1]]])
>>> e.sum(axis = 0)
array([[3, 1],
[1, 1]])
>>> e.sum(axis=1)
array([[1, 0],
[2, 1],
[1, 1]])
>>> e.sum(axis=2)
array([[1, 0],
[2, 1],
[1, 1]])
>>>
Run Code Online (Sandbox Code Playgroud)
显然,结果并不直观.
以下面的例子为例:
>>> df1 = pd.DataFrame({"x":[1, 2, 3, 4, 5],
"y":[3, 4, 5, 6, 7]},
index=['a', 'b', 'c', 'd', 'e'])
>>> df2 = pd.DataFrame({"y":[1, 3, 5, 7, 9],
"z":[9, 8, 7, 6, 5]},
index=['b', 'c', 'd', 'e', 'f'])
>>> pd.concat([df1, df2], join='inner')
Run Code Online (Sandbox Code Playgroud)
输出是:
y
a 3
b 4
c 5
d 6
e 7
b 1
c 3
d 5
e 7
f 9
Run Code Online (Sandbox Code Playgroud)
由于axis=0
是列,我认为concat()
只考虑在两个数据帧中找到的列.但是,实际输出会考虑在两个数据帧中找到的行.
axis
参数的确切含义是什么?
machine-learning multidimensional-array python-3.x tensorflow one-hot-encoding
在pandas中,axis=0代表行,axis=1代表列。因此,要获取 pandas 中每行值的总和,请调用 df.sum(axis=0) 。但它返回每列中的值的总和,反之亦然。为什么???
import pandas as pd
df=pd.DataFrame({"x":[1,2,3,4,5],"y":[2,4,6,8,10]})
df.sum(axis=0)
Run Code Online (Sandbox Code Playgroud)
数据框:
x y
0 1 2
1 2 4
2 3 6
3 4 8
4 5 10
Run Code Online (Sandbox Code Playgroud)
输出:
x 15
y 30
Run Code Online (Sandbox Code Playgroud)
预期输出:
0 3
1 6
2 9
3 12
4 15
Run Code Online (Sandbox Code Playgroud) 请求很简单:我想选择包含大于阈值的值的所有行.
如果我这样做:
df[(df > threshold)]
Run Code Online (Sandbox Code Playgroud)
我得到这些行,但低于该阈值的值很简单NaN
.如何避免选择这些行?
python ×9
pandas ×6
numpy ×4
dataframe ×3
arrays ×2
axis ×1
data-science ×1
join ×1
merge ×1
python-3.x ×1
tensorflow ×1