我2 - end从 Pandas DataFrame 中选择列iloc作为
d=c.iloc[:,2:]
Run Code Online (Sandbox Code Playgroud)
现在如何将条件应用于此选择?例如,如果column1==1.
如果我有一个带有多级索引的pandas数据帧,我该如何按该索引的某个级别进行过滤.例如:
df = pd.DataFrame({"id": [1,2,1,2], "time": [1, 1, 2, 2], "val": [1,2,3,4]})
df.set_index(keys=["id", "time"], inplace=True)
Run Code Online (Sandbox Code Playgroud)
我想做的事情如下:
df[df["time"] > 1]
Run Code Online (Sandbox Code Playgroud)
但time不再是专栏.我可以将它保留为列,但我不想拖动数据副本.
这个问题与另一个问题非常相关,我甚至会在这个问题上使用非常有用的解决方案中的例子.以下是已接受的解决方案(信用证到unutbu)的示例:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8), 'D': np.arange(8) * 2})
print(df)
# A B C D
# 0 foo one 0 0
# 1 bar one 1 2
# 2 foo two 2 4
# 3 bar three 3 6
# 4 foo two 4 8
# 5 bar two 5 …Run Code Online (Sandbox Code Playgroud) 我想问一个问题是这个帖子的扩展:
该线程的代码如下所示:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8), 'D': np.arange(8) * 2})
print(df)
# A B C D
# 0 foo one 0 0
# 1 bar one 1 2
# 2 foo two 2 4
# 3 bar three 3 6
# 4 foo two 4 8
# 5 bar two 5 10 …Run Code Online (Sandbox Code Playgroud) 经常出现以下问题。假设我有一个数据框,其中一列可以采用离散值:
df = pd.DataFrame({'col1': [1, 2,3,4,5,6,7], 'col2': ["A", "B", "A", "C", "B", "A", "D"]})
Run Code Online (Sandbox Code Playgroud)
在这种情况下,col2可取的值A,B或C.我只想行,其中col2 不等于A或B.我想下面的语法会的工作,
df["col2"] not in ["A", "B"]
Run Code Online (Sandbox Code Playgroud)
但是,这给了我错误 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
有没有一种巧妙的方法来过滤掉这些行?
我将 csv 数据文件导入到df带有.pandas DataFrame 的 pandas DataFrame 中pd.read_csv。该文本文件包含一列,其中包含如下字符串:
y
0.001
0.0003
0.0001
3e-05
1e-05
1e-06
Run Code Online (Sandbox Code Playgroud)
如果我打印 DataFrame,pandas 会输出这些值的十进制表示形式,逗号后有 6 位数字,一切看起来都很好。
当我尝试按值选择行时,如下所示:
df[df['y'] == value],
Run Code Online (Sandbox Code Playgroud)
通过输入值的相应十进制表示形式,pandas 可以正确匹配某些值(例如:第 0、2、4 行),但不会匹配其他值(第 1、3、5 行)。这当然是因为这些行值在基数 2 中没有完美的表示。
我能够通过以下方式解决这个问题:
df[abs(df['y']/value-1) <= 0.0001]
Run Code Online (Sandbox Code Playgroud)
但似乎有些尴尬。我想知道的是: numpy 已经有一个方法.isclose,专门用于此目的。
.isclose像这样的情况有没有办法使用呢?或者 pandas 中有更直接的解决方案?
这不是一个重复的问题,但类似于
在上一个链接的答案中,如果我有多个标准,它只基于一个标准.
我想在列中选择许多行,而不仅仅是基于特定值的行.为了论证,考虑来自世界银行的DataFrame
import pandas.io.wb as wb
import pandas as pd
import numpy as np
df2= wb.get_indicators()
Run Code Online (Sandbox Code Playgroud)
我选择certian值的方式就是这样
df2.loc[df2['id'] == 'SP.POP.TOTL']
Run Code Online (Sandbox Code Playgroud)
和
df2.loc[df2['id'] == 'NY.GNP.PCAP.CD']
Run Code Online (Sandbox Code Playgroud)
如何在一个新数据帧中选择或者说3或4?这样行是:
'SP.POP.TOTL'
'NY.GNP.PCAP.CD'
Run Code Online (Sandbox Code Playgroud)
先感谢您
我目前正在格式化来自两个不同数据集的数据.其中一个数据集反映了按小时计算人数的观察数,第二个是基于5分钟间隔生成的wifi日志的人数.
将这两个数据帧合并为一个之后,我遇到的问题是每小时("10:00:00")有原始数据集,但其他数据(每5分钟像"10:47:14")不包括此数据.
以下是合并数据框的外观:
room time con auth capacity % Count module size
0 B002 Mon Nov 02 10:32:06 23 23 90 NaN NaN NaN NaN`
1 B002 Mon Nov 02 10:37:10 25 25 90 NaN NaN NaN NaN`
12527 B002 Mon Nov 02 10:00:00 NaN NaN 90 50% 45.0 COMP30520 60`
12528 B002 Mon Nov 02 11:00:00 NaN NaN 90 0% 0.0 COMP30520 60`
Run Code Online (Sandbox Code Playgroud)
有没有办法让我通过数据框并从11:00:00找到有关"占用","占用","模块"和"大小"的所有信息,并将其写入所有的单元格中.同一天,小时在10:00:00到10:59:59之间?
这将允许我获得每一行的所有信息,然后允许我收集min(),max()并median()基于"日"和"小时".
要回答原始数据帧的注释,这里有:
第一个数据帧:
time room module size
0 Mon …Run Code Online (Sandbox Code Playgroud) 这个问题与这两个问题another和thisone非常相关,我什至会使用这个问题上非常有用的公认解决方案中的示例。这是已接受的解决方案中的示例(归功于 unutbu):
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8), 'D': np.arange(8) * 2})
print(df)
# A B C D
# 0 foo one 0 0
# 1 bar one 1 2
# 2 foo two 2 4
# 3 bar three 3 6
# 4 foo two 4 8
# 5 bar …Run Code Online (Sandbox Code Playgroud) 我有一个数据框(df),如下所示:
environment event
time
2017-04-28 13:08:22 NaN add_rd
2017-04-28 08:58:40 NaN add_rd
2017-05-03 07:59:35 test add_env
2017-05-03 08:05:14 prod add_env
...
Run Code Online (Sandbox Code Playgroud)
现在,我的目标是针对add_rd该event列中的每个列,该列中的关联NaN值environment应替换为string RD。
environment event
time
2017-04-28 13:08:22 RD add_rd
2017-04-28 08:58:40 RD add_rd
2017-05-03 07:59:35 test add_env
2017-05-03 08:05:14 prod add_env
...
Run Code Online (Sandbox Code Playgroud)
我到目前为止所做的
我偶然发现df['environment'] = df['environment].fillna('RD')哪个替换了每个 NaN(这不是我要寻找的),pd.isnull(df['environment'])它正在检测缺失的值,np.where(df['environment'], x,y)这似乎是我想要的但无法正常工作。此外,我是否尝试过:
import pandas as pd
for env in df['environment']:
if pd.isnull(env) and df['event'] …Run Code Online (Sandbox Code Playgroud)