我有不同列中的数据,但我不知道如何提取它以将其保存在另一个变量中.
index a b c
1 2 3 4
2 3 4 5
Run Code Online (Sandbox Code Playgroud)
我该如何选择'a','b'并保存到DF1?
我试过了
df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']
Run Code Online (Sandbox Code Playgroud)
似乎没有工作.
有人能解释这三种切片方法有何不同?
我已经看过这些文档了,我已经看到了这些 答案,但我仍然发现自己无法解释三者是如何不同的.对我来说,它们在很大程度上似乎是可以互换的,因为它们处于较低的切片水平.
例如,假设我们想获得a的前五行DataFrame.这三个都是如何运作的?
df.loc[:5]
df.ix[:5]
df.iloc[:5]
Run Code Online (Sandbox Code Playgroud)
有人可以提出三种情况,其中使用的区别更清晰吗?
我无法得到大熊猫中一列的平均值或平均值.A有一个数据帧.我在下面尝试的任何事情都没有给出列的平均值weight
>>> allDF
ID birthyear weight
0 619040 1962 0.1231231
1 600161 1963 0.981742
2 25602033 1963 1.3123124
3 624870 1987 0.94212
Run Code Online (Sandbox Code Playgroud)
以下返回多个值,而不是一个:
allDF[['weight']].mean(axis=1)
Run Code Online (Sandbox Code Playgroud)
这样做:
allDF.groupby('weight').mean()
Run Code Online (Sandbox Code Playgroud) 为什么我们将'loc'用于pandas数据帧?似乎以下代码使用或不使用loc编译anr以相同的速度运行
%timeit df_user1 = df.loc[df.user_id=='5561']
100 loops, best of 3: 11.9 ms per loop
Run Code Online (Sandbox Code Playgroud)
要么
%timeit df_user1_noloc = df[df.user_id=='5561']
100 loops, best of 3: 12 ms per loop
Run Code Online (Sandbox Code Playgroud)
那么为什么要使用loc?
编辑:这已被标记为重复的问题.但是,虽然pandas iloc vs ix vs loc解释?确实提到*
你可以只使用数据框的getitem进行列检索 :
*
df['time'] # equivalent to df.loc[:, 'time']
Run Code Online (Sandbox Code Playgroud)
它没有说明为什么我们使用loc,虽然它确实解释了loc的许多功能,但我的具体问题是"为什么不完全省略loc"?我已经接受了以下非常详细的答案.
还有其他帖子的答案(我认为不是答案)在讨论中非常隐藏,任何寻找我正在寻找的人都会发现很难找到信息,而且提供的答案会更好我的问题.
如果我有这个最小的可重复示例
import pandas as pd
df = pd.DataFrame({"A":[12, 4, 5, None, 1],
"B":[7, 2, 54, 3, None],
"C":[20, 16, 11, 3, 8],
"D":[14, 3, None, 2, 6]})
index_ = ['Row_1', 'Row_2', 'Row_3', 'Row_4', 'Row_5']
df.index = index_
print(df)
# Option 1
result = df[['A', 'D']]
print(result)
# Option 2
result = df.loc[:, ['A', 'D']]
print(result)
Run Code Online (Sandbox Code Playgroud)
loc使用与不使用有什么影响。结果非常相似。我问这个问题是为了准备一个更复杂的问题,在这个问题中我被指示使用 loc。