如何设置一个等于一行的pandas数据帧?

时间:2015-07-31 07:51:31

标签: pandas

我知道如何将pandas数据帧设置为等于列。 即:

df = df['col1']

一行的等价物是什么?让我们说取指数?我会消除其中的一个或多个吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

如果要获取行的副本,则可以使用loc进行标记索引,或使用iloc进行基于整数的索引:

In [104]:
df = pd.DataFrame({'a':np.random.randn(10),'b':np.random.randn(10)})
df

Out[104]:
          a         b
0  1.216387 -1.298502
1  1.043843  0.379970
2  0.114923 -0.125396
3  0.531293 -0.386598
4 -0.278565  1.224272
5  0.491417 -0.498816
6  0.222941  0.183743
7  0.322535 -0.510449
8  0.695988 -0.300045
9 -0.904195 -1.226186

In [106]:
row = df.iloc[3]
row

Out[106]:
a    0.531293
b   -0.386598
Name: 3, dtype: float64

如果您要删除该行,则可以使用drop

In [107]:
df.drop(3)

Out[107]:
          a         b
0  1.216387 -1.298502
1  1.043843  0.379970
2  0.114923 -0.125396
4 -0.278565  1.224272
5  0.491417 -0.498816
6  0.222941  0.183743
7  0.322535 -0.510449
8  0.695988 -0.300045
9 -0.904195 -1.226186

您还可以使用切片或传递标签列表:

In [109]:
rows = df.loc[[3,5]]
row_slice = df.loc[3:5]
print(rows)
print(row_slice)
          a         b
3  0.531293 -0.386598
5  0.491417 -0.498816
          a         b
3  0.531293 -0.386598
4 -0.278565  1.224272
5  0.491417 -0.498816

同样,您可以将列表传递给drop

In [110]:
df.drop([3,5])

Out[110]:
          a         b
0  1.216387 -1.298502
1  1.043843  0.379970
2  0.114923 -0.125396
4 -0.278565  1.224272
6  0.222941  0.183743
7  0.322535 -0.510449
8  0.695988 -0.300045
9 -0.904195 -1.226186

如果要删除切片,则可以对索引进行切片并将其传递给drop

In [112]:
df.drop(df.index[3:5])

Out[112]:
          a         b
0  1.216387 -1.298502
1  1.043843  0.379970
2  0.114923 -0.125396
5  0.491417 -0.498816
6  0.222941  0.183743
7  0.322535 -0.510449
8  0.695988 -0.300045
9 -0.904195 -1.226186