相关疑难解决方法(0)

如何在Pandas read_csv函数中过滤加载行?

如何使用pandas过滤哪些CSV行加载到内存中?这似乎是一个应该找到的选项read_csv.我错过了什么吗?

示例:我们有一个带有时间戳列的CSV,我们只想加载时间戳大于给定常量的行.

python pandas

85
推荐指数
3
解决办法
5万
查看次数

使用pd.eval()在pandas中进行动态表达式评估

目标和动机

pd.eval并且eval是pandas API套件中功能强大但被低估的功能,它们的使用远未完全记录或理解.小心适量,eval并且engine可以极大地简化代码,提高性能,并成为创建动态工作流的强大工具.

这个规范QnA的目的是让用户更好地理解这些功能,讨论一些鲜为人知的功能,如何使用它们,以及如何最好地使用它们,以及清晰易懂的示例.这篇文章将讨论的两个主要议题是

  1. 了解parser,df2x在争论pd.eval,以及它们如何被用来计算表达式
  2. 了解之间的差eval,eval并且engine,当每个功能是合适的用于动态执行.

这篇文章不能替代文档(答案中的链接),所以请完成它!


我将以这样的方式构建一个问题,以便开启对所支持的各种功能的讨论parser.

给出两个DataFrame

np.random.seed(0)
df1 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))

df1
   A  B  C  D
0  5  0  3  3
1  7  9  3  5
2  2  4  7  6
3  8  8  1  6
4  7  7  8  1

df2
   A  B  C …
Run Code Online (Sandbox Code Playgroud)

python eval dataframe pandas

45
推荐指数
2
解决办法
7156
查看次数

如何引用名称中带有点的 Pandas 列

我正在 Python Pandas 中使用一个数据框,该数据框的列名以Content.. 我可以通过声明来访问给定的列df['Content.xyz']。但是,当我尝试对其执行查询时,例如df.query("Content.xyz not in @mylist"),它会引发一个Content不是数据帧成员的错误。

如何在名称前加句点执行查询或其他类似操作?

此外,一些系列名称中有空格。我假设带有句点的列名的解决方案类似于包含空格的名称的解决方案。

python pandas

8
推荐指数
1
解决办法
4152
查看次数

pandas:是否可以使用任意长的布尔标准过滤数据帧?

如果您确切地知道如何过滤数据帧,那么解决方案很简单:

df[(df.A == 1) & (df.B == 1)]

但是,如果您接受用户输入并且事先不知道用户想要使用多少条件,该怎么办?例如,用户想要一个过滤的数据框,其中列[A,B,C] == 1.是否可以执行以下操作:

def filterIt(*args, value):
    return df[(df.*args == value)]
Run Code Online (Sandbox Code Playgroud)

所以如果用户调用filterIt(A, B, C, value=1),则返回:

df[(df.A == 1) & (df.B == 1) & (df.C == 1)]
Run Code Online (Sandbox Code Playgroud)

python pandas

7
推荐指数
2
解决办法
610
查看次数

使用条件列绘制pandas DataFrame

我有这种pandas.DataFrame.得到"x"和"y"时,"a","b"是条件.

df = pd.DataFrame([[10,20,0,.1], [10,20,1,.5], [100,200,0,.33], [100,200,1,.11]], columns=["a", "b", "x", "y"])
df
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我需要根据相同的条件绘制(x,y)列的折线图.预期结果图是:

在此输入图像描述 在此输入图像描述

当然,此图像由以下代码手动提供:

pd.DataFrame([[0,.1],[1,.5]]).plot(kind="line", x=0, y=1, style="-", legend=None, title="a: 10, b: 20")
plt.xlabel("x")
plt.ylabel("y")
plt.figure()
pd.DataFrame([[0,.33],[1,.11]]).plot(kind="line", x=0, y=1, style="-", legend=None, title="a: 100, b: 200")
plt.xlabel("x")
plt.ylabel("y")
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在获取包含条件列x和y的数据帧时动态制作上面的图.

更新

列名是固定的.但是,条件列的值是动态更改的.所以,我不能使用值10,20,100,200.

UPDATE2

如果我有以下"filter_with_a_and_b"方法,我认为问题解决了:

def filter_with_a_and_b(df, a_b):
    # how to implement?

a_b_list = df.drop_duplicates(["a","b"])
new_df_list = filter_with_a_and_b(df, a_b)
for idx, df in enumerate(new_df_list):
    df.plot(title=a_b_list[idx])
Run Code Online (Sandbox Code Playgroud)

python plot pandas

5
推荐指数
1
解决办法
8364
查看次数

熊猫:在有条件的情况下查找最大值

我有一个数据框df:

id  volume  saturation  time_delay_normalised   speed   BPR_free_speed  BPR_speed   Volume  time_normalised
27WESTBOUND 580 0.351515152 57  6.54248366  17.88   15.91366177 580 1.59375
27WESTBOUND 588 0.356363636 100 5.107142857 17.88   15.86519847 588 2.041666667
27WESTBOUND 475 0.287878788 64  6.25625 17.88   16.51161331 475 0.666666667
27EASTBOUND 401 0.243030303 59  6.458064516 17.88   16.88283672 401 1.0914583333
27EASTBOUND 438 0.265454545 46  7.049295775 17.88   16.70300418 438 1.479166667
27EASTBOUND 467 0.283030303 58  6.5 17.88   16.55392848 467 0.9604166667
Run Code Online (Sandbox Code Playgroud)

我希望创建一个新的列,free_capacity并将其设置为最大值Volume,每IDtime_normalised大于或等于小于1.1

不考虑time_normalized条件,我可以这样做:

df['free_capacity'] = df.groupby('id')["Volume"].transform('max')
Run Code Online (Sandbox Code Playgroud)

如何添加when time_normalised <= …

python pandas

5
推荐指数
1
解决办法
6145
查看次数

标签 统计

pandas ×6

python ×6

dataframe ×1

eval ×1

plot ×1