从pandas datafram获取特定行作为序列

2024-05-13 14:24:18 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将特定的筛选行作为序列?

数据帧示例:

>>> df = pd.DataFrame({'date': [20130101, 20130101, 20130102], 'location': ['a', 'a', 'c']})
>>> df
       date location
0  20130101        a
1  20130101        a
2  20130102        c

我需要选择location所在的行c作为一个系列。

我试过:

row = df[df["location"] == "c"].head(1)  # gives a dataframe
row = df.ix[df["location"] == "c"]       # also gives a dataframe with single row

在这两种情况下,我都不能将行作为序列。


Tags: 数据示例dataframedfdatewith序列location
2条回答

您可以使用整数索引(iloc()函数)获取第一行:

>>> df[df["location"] == "c"].iloc[0]
date        20130102
location           c
Name: 2, dtype: object

使用^{}函数从数据帧中删除一个维度:

df[df["location"] == "c"].squeeze()
Out[5]: 
date        20130102
location           c
Name: 2, dtype: object

当设置为True时,DataFrame.squeeze方法的作用与read_csv函数的squeeze参数相同:如果生成的数据帧是1-len的数据帧,即它只有一个维度(列或行),则对象被压缩到更小的维度对象。

在您的例子中,您可以从数据帧中获取一个Series对象。如果将面板向下挤压到数据帧,同样的逻辑也适用。

挤压在您的代码中是明确的,并且清楚地显示了您“放下”手中的对象的意图,因为它的维度可以投影到更小的对象上。

如果数据帧有多个列或行,则挤压不起作用。

相关问题 更多 >