如何打印pandas DataFrame的特定行?

sin*_*tor 38 python indexing python-3.x pandas

我有一个庞大的数据帧,我收到错误:

TypeError: ("Empty 'DataFrame': no numeric data to plot", 'occurred at index 159220')

我已经删除了空值,并检查了数据框架的dtypes,因此我无法猜测为什么它在该行上失败了.

如何打印出数据框的那一行(索引为159220)?

谢谢

piR*_*red 38

当你loc用标量值调用时,你会得到一个pd.Series.那个系列将有一个dtype.如果你想看到数据帧中的行,你需要传递像indexer这样的数组loc.

使用另外一对方括号包装索引值

print(df.loc[[159220]])
Run Code Online (Sandbox Code Playgroud)

  • @ Acoustic77 loc抓取了索引中实际存在的东西.iloc抓住位置.有时他们是一样的.没有一个或另一个的偏好.取决于你需要什么. (4认同)
  • 我看过3个不同的答案,(df.loc [[]],df.ix []和df.iloc [])它们之间有区别吗?或者一个优于其他人的优势? (2认同)
  • @ Acoustic77是的.ix将被弃用.我解释了双支架的目的 (2认同)

kam*_*sar 20

要打印一个特定的行,我们有几个pandas方法1.loc - 它只获得标签,即列名或功能2.iloc - 这里我代表整数,实际上是行号3.ix - 它是标签的混合以及整数如何用于特定的行1. loc

df.loc[row,column]
Run Code Online (Sandbox Code Playgroud)

对于第一行和所有列

df.loc[0,:]
Run Code Online (Sandbox Code Playgroud)

对于第一行和一些特定列

df.loc[0,'column_name']
Run Code Online (Sandbox Code Playgroud)

2.iloc对于第一行和所有列

df.iloc[0,:]
Run Code Online (Sandbox Code Playgroud)

对于第一行和一些特定列,即前三列

df.iloc[0,0:3]
Run Code Online (Sandbox Code Playgroud)


CK *_*hen 14

使用ix运算符:

print df.ix[159220]
Run Code Online (Sandbox Code Playgroud)

  • 要引用此消息,请生成:DeprecationWarning:.ix已弃用.请使用.loc进行基于标签的索引或.iloc进行位置索引请参阅此处的文档:http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated这与ipykernel包,所以我们可以避免直到进口 (3认同)
  • 从 pandas 1.0(2020 年 1 月 29 日发布)开始,这不再有效。 (2认同)

BER*_*RKO 8

如果要显示在 row=159220

row=159220

#To display in a table format, you can use with or without display()
df.iloc[row:row+1]
df.loc[row:row]       #Not recommended

#To display in print format, you can use with or without display()
df.iloc[row]
df.loc[row]       #Not recommended
Run Code Online (Sandbox Code Playgroud)


Bat*_*man 5

听起来就像您在打电话df.plot()。该错误表明您正在尝试绘制没有数字数据的框架。数据类型不应该影响您print()

使用 print(df.iloc[159220])