有人能解释这三种切片方法有何不同?
我已经看过这些文档了,我已经看到了这些 答案,但我仍然发现自己无法解释三者是如何不同的.对我来说,它们在很大程度上似乎是可以互换的,因为它们处于较低的切片水平.
例如,假设我们想获得a的前五行DataFrame.这三个都是如何运作的?
df.loc[:5]
df.ix[:5]
df.iloc[:5]
Run Code Online (Sandbox Code Playgroud)
有人可以提出三种情况,其中使用的区别更清晰吗?
这似乎是一个非常简单的问题...但我没有看到我期待的简单答案.
那么,如何在Pandas的给定列的第n行获取值?(我对第一行特别感兴趣,但也会对更普遍的做法感兴趣).
例如,假设我想将Btime中的1.2值作为变量.
这是正确的方法吗?
df_test =
ATime X Y Z Btime C D E
0 1.2 2 15 2 1.2 12 25 12
1 1.4 3 12 1 1.3 13 22 11
2 1.5 1 10 6 1.4 11 20 16
3 1.6 2 9 10 1.7 12 29 12
4 1.9 1 1 9 1.9 11 21 19
5 2.0 0 0 0 2.0 8 10 11
6 2.4 0 0 0 2.4 10 12 15
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的熊猫数据框(它是一个非常大的)
date exer exp ifor mat
1092 2014-03-17 American M 528.205 2014-04-19
1093 2014-03-17 American M 528.205 2014-04-19
1094 2014-03-17 American M 528.205 2014-04-19
1095 2014-03-17 American M 528.205 2014-04-19
1096 2014-03-17 American M 528.205 2014-05-17
Run Code Online (Sandbox Code Playgroud)
现在我想逐行迭代,当我遍历每一行时,每行的值ifor
可以根据某些条件改变,我需要查找另一个数据帧.
现在,我如何在迭代时更新它.尝试了一些他们都没有工作的事情.
for i, row in df.iterrows():
if <something>:
row['ifor'] = x
else:
row['ifor'] = y
df.ix[i]['ifor'] = x
Run Code Online (Sandbox Code Playgroud)
这些方法似乎都不起作用.我没有看到数据框中的值已更新.
我正在学习Python pandas库.来自R背景,索引和选择功能似乎比它们需要的更复杂.我理解.loc()只是基于标签而.iloc()只是基于整数.
如果.ix()更快并支持整数和标签访问,为什么我应该使用.loc()和.iloc()?
这是我的df:
Net Upper Lower Mid Zsore
Answer option
More than once a day 0% 0.22% -0.12% 2 65
Once a day 0% 0.32% -0.19% 3 45
Several times a week 2% 2.45% 1.10% 4 78
Once a week 1% 1.63% -0.40% 6 65
Run Code Online (Sandbox Code Playgroud)
如何按名称("Mid")将列移动到表的前面,索引0.这是它需要的样子:
Mid Upper Lower Net Zsore
Answer option
More than once a day 2 0.22% -0.12% 0% 65
Once a day 3 0.32% -0.19% 0% 45
Several times a week 4 2.45% 1.10% 2% 78
Once a …Run Code Online (Sandbox Code Playgroud) 假设我们有一个 pandas 数据框:
name age sal
0 Alex 20 100
1 Jane 15 200
2 John 25 300
3 Lsd 23 392
4 Mari 21 380
Run Code Online (Sandbox Code Playgroud)
假设现在删除了几行,但我们不知道已删除的索引。例如,我们使用 删除行索引 1 df.drop([1])。现在数据框可以归结为:
fname age sal
0 Alex 20 100
2 John 25 300
3 Lsd 23 392
4 Mari 21 380
Run Code Online (Sandbox Code Playgroud)
我想从行索引 3 和列“年龄”获取值。它应该返回 23。我该怎么做?
df.iloc[3, df.columns.get_loc('age')]不起作用,因为它将返回 21。我猜 iloc 采用连续行索引?
我在想,如果有调用的可能性idxmin,并min在同一时间(在相同的呼叫/循环)。
假设以下数据框:
id option_1 option_2 option_3 option_4
0 0 10.0 NaN NaN 110.0
1 1 NaN 20.0 200.0 NaN
2 2 NaN 300.0 30.0 NaN
3 3 400.0 NaN NaN 40.0
4 4 600.0 700.0 50.0 50.0
Run Code Online (Sandbox Code Playgroud)
我想计算该系列的最小值(min)和包含最小值的列(idxmin)option_:
id option_1 option_2 option_3 option_4 min_column min_value
0 0 10.0 NaN NaN 110.0 option_1 10.0
1 1 NaN 20.0 200.0 NaN option_2 20.0
2 2 NaN 300.0 30.0 NaN option_3 30.0
3 …Run Code Online (Sandbox Code Playgroud) 是否可以基于整数位置定义熊猫数据框中特定单元格的颜色,例如 df.iloc[1,1] 和熊猫样式?https://pandas.pydata.org/pandas-docs/stable/style.html
像下面这样的东西会很好,但不起作用。
def style_specific_cell(val):
color = 'lightgreen'
val.iloc[2, 8] = color
return XYZ
df = df.style.applymap(style_specific_cell, subset=['Column1']
Run Code Online (Sandbox Code Playgroud) 要获取整数位置的标量0和列标签'A'的数据帧df,我做链接的索引:df.iloc[0]['A']。这是有效的,但 Pandas 文档说应该避免链接索引。
我能想到的另一种方法是df.iat[0, df.columns.get_loc('A')],与链式索引相比,它的类型太多了。有没有更短的方法来做到这一点?
注意:不推荐使用 .ix 索引器。
例子:
df=pd.DataFrame({'A':[10,20,30,40]}, index=[3,2,1,0])
一种 ------ 3 10 2 20 1 30 0 40
0列中整数位置的标量A是10而不是40:
df.iat[0, df.columns.get_loc('A')]
Otuput:10
data = [['tom', 10], ['nick', 15], ['juli', 14]]
df = pd.DataFrame(data, columns = ['Name', 'Age'], index = [7,3,9])
display(df)
df.iat[0,0]
Run Code Online (Sandbox Code Playgroud)
我想返回第一行中的年龄(基本上类似于 df.iat[0,'Age']。预期结果 = 10
感谢您的帮助!