小编las*_*lex的帖子

获取没有索引的dataframe列的最后一个值

假设我有一个DataFrame,例如:

df = pd.DataFrame(np.random.randn(10,5), columns = ['a','b','c','d','e'])
Run Code Online (Sandbox Code Playgroud)

我想检索列e中的最后一个值.我可以:

df['e'].tail(1)
Run Code Online (Sandbox Code Playgroud)

但是这会返回一个带有索引9的系列.理想情况下,我只想获得价值作为我可以直接使用的数字.我也可以这样做:

np.array(df['e'].tail(1))
Run Code Online (Sandbox Code Playgroud)

但是这将要求我在我真正使用它之前访问/调用它的第0个元素.有没有更直接/简单的方法来做到这一点?

python pandas

16
推荐指数
1
解决办法
2万
查看次数

如何检查 Pandas 系列中的所有元素是否等于特定值

对于给定的系列,例如

s = pd.Series([0,0,0])
Run Code Online (Sandbox Code Playgroud)

我想检查该系列中的所有元素是否等于特定值(在本例中我们可以使用 0),如果是这种情况,则返回 TRUE,否则返回 FALSE。

有没有一种方便的方法可以在 Pandas/numpy 中完成这些操作?

python numpy series pandas

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

列表理解与numpy数组 - 糟糕的做法?

我想知道下面的方法是否会被认为是不好的做法,如果是的话,如果有人可以给出另一种方法的指导.

这是有问题的代码:

a = np.array([[1,2,3],[4,5,6]])
b = np.array([-5,5])
c = np.array([np.multiply(a[x],b[x]) for x in range(2)])
Run Code Online (Sandbox Code Playgroud)

这里的目标是获得一个与'a'形状相同的数组,其中'a'的第一个元素中的值乘以'b'的第一个元素,并且'a'的第二个元素中的值相乘由'b'的第二个元素

上面的代码是有效的,但考虑到列表/数组的混合,我担心这是建议不要 - 但我不清楚更优雅的解决方案.提前谢谢了!

python numpy

6
推荐指数
1
解决办法
1753
查看次数

在同一海洋图上绘制多个线性回归

假设我有以下内容:

x1 = np.random.randn(50)
y1 = np.random.randn(50) * 100
x2 = np.random.randn(50)
y2 = np.random.randn(50) * 100

df1 = pd.DataFrame({'x1':x1, 'y1': y1})
df2 = pd.DataFrame({'x2':x2, 'y2': y2})

sns.lmplot('x1', 'y1', df1, fit_reg=True, ci = None)
sns.lmplot('x2', 'y2', df2, fit_reg=True, ci = None)
Run Code Online (Sandbox Code Playgroud)

这将创建2个单独的图。如何将df2中的数据添加到SAME图上?我在网上找到的所有最原始的示例似乎都集中在如何创建相邻图形上(例如,通过“ hue”和“ col_wrap”选项)。另外,我不希望使用可能存在附加列的数据集示例,因为这在我正在从事的项目中没有自然的含义。

如果要实现此功能需要混合使用matplotlib / seaborn函数,那么如果有人可以帮助说明,我将不胜感激。谢谢!

python plot matplotlib seaborn

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

获取嵌套字典中唯一值的列表(或集)

我想知道是否有更优雅/ pythonic方式来做以下事情.假设我有一个嵌套字典:

orders = {'peter': {'food': 'pizza', 'drink': 'soda'}, 'paul': {'food': 'taco', 'drink': 'soda'},'mary': {'food': 'pizza', 'drink': 'water'}}
Run Code Online (Sandbox Code Playgroud)

我想获得一份包含每个人独特的"食物"项目的清单,即 ['pizza', 'taco']

这是最简单的方法吗?

foodList = []
for i in orders.keys():
    foodList.append(orders[i]['food'])
s = set(foodList)
Run Code Online (Sandbox Code Playgroud)

python dictionary list set

4
推荐指数
1
解决办法
1113
查看次数

有条件地乘以 DataFrame 行中的值

这是一个示例数据框:

df = pd.DataFrame([[1,0.5,-0.3],[0,-4,7],[1,0.12,-.06]], columns=['condition','value1','value2'])
Run Code Online (Sandbox Code Playgroud)

我想应用一个函数,如果该行的“条件”列中的值等于 1,则将每行中的值(“value1”和“value2”)乘以 100,否则保持原样。

大概 .apply 与 lambda 函数的一些用法在这里可以工作,但我无法获得正确的语法。例如

df.apply(lambda x: 100*x if x['condition'] == 1, axis=1) 
Run Code Online (Sandbox Code Playgroud)

不管用

应用此操作后所需的输出将是:

在此输入图像描述

dataframe python-3.x pandas

4
推荐指数
1
解决办法
7577
查看次数

pandas DataFrame中的if-else条件引用了两行

我有一个示例,其中需要根据if-else条件填充数据框列,该条件引用当前行以及上一行。这是示例数据集:

time = pd.Series(pd.date_range(start='20140101', end='20190901', freq='Q').astype('period[Q]'), name='time')
results = pd.Series(['0','W','W','W','0','0','L','L','L','L','W','W','W','0','0','W','W','W','0','L','L','0'], name='result')
df = pd.concat([time, results], axis=1)
Run Code Online (Sandbox Code Playgroud)

我想创建一个列df['last win'],其中包含的值time对于当前行,如果它是W,或最后time,它有一个W。因此,所需的输出将是:

     time result last_win
0  2014Q1      0      NaT
1  2014Q2      W   2014Q2
2  2014Q3      W   2014Q3
3  2014Q4      W   2014Q4
4  2015Q1      0   2014Q4
5  2015Q2      0   2014Q4
6  2015Q3      L   2014Q4
7  2015Q4      L   2014Q4
8  2016Q1      L   2014Q4
9  2016Q2      L   2014Q4
10 2016Q3      W   2016Q3
11 2016Q4      W   2016Q4
12 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

4
推荐指数
1
解决办法
46
查看次数

基于多个条件替换熊猫数据框中的值

我有一个基于此示例代码的相当简单的问题:

x1 = 10*np.random.randn(10,3)
df1 = pd.DataFrame(x1)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个派生自df1其中正值替换为"up",负值替换为"down",并且0值(如果有)替换为"zero". 我曾尝试使用.where().mask()方法,但无法获得所需的结果。

我看过其他帖子,它们一次根据多个条件进行过滤,但它们没有展示如何根据不同条件替换值。

python numpy dataframe pandas

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

如何在matplotlib中的图的一个轴上旋转xticks,而不会“获取”标签作为列表

假设我有以下代码,该代码创建一个带有两个轴的matplotlib图形,其中第二个具有x轴标签作为日期:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import datetime as dt    

x1 = np.arange(0,30)
x2 = pd.date_range('1/1/2016', periods=30, freq='D')
y1 = np.random.randn(30)
y2 = np.random.randn(30)

%matplotlib inline
fig, ax = plt.subplots(1,2, figsize=(18,5))
ax[0].scatter(x1,y1)
ax[1].scatter(x2,y2)
Run Code Online (Sandbox Code Playgroud)

在ipython笔记本中显示此内容时,右侧的图形的x轴标签会彼此碰到。我想旋转标签以提高可见度。所有文档和在线搜索似乎都建议使用以下两个选项之一(均在上面的最后一行之后):

#1

plt.setp(ax[1].xaxis.get_majorticklabels(),rotation=90,horizontalalignment='right')
Run Code Online (Sandbox Code Playgroud)

或#2

plt.xticks(rotation=90)
Run Code Online (Sandbox Code Playgroud)

这些都可以使用,但也会打印标签列表(由​​于某些原因,第一个示例与第二个示例有所不同)

如何在不输出某些数组的情况下完成旋转/显示?

python matplotlib

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

如何覆盖数据帧第一行的值

给定一个panda.Dataframe诸如:

df = pd.DataFrame(np.random.randn(10,5), columns = ['a','b','c','d','e'])
Run Code Online (Sandbox Code Playgroud)

我想知道用 0 (或其他特定值)替换第一行中的所有值并使用新数据框的最佳方法。我想以一般方式执行此操作,其中可能有比本示例中更多或更少的列。

尽管问题很简单,但我无法找到解决方案。fillna()其他人发布的大多数示例都与相关方法有关

python dataframe python-3.x pandas

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

标签 统计

python ×9

pandas ×6

dataframe ×4

numpy ×3

matplotlib ×2

python-3.x ×2

dictionary ×1

list ×1

plot ×1

seaborn ×1

series ×1

set ×1