【问题标题】:when i transpose a dataframe, it shows nan values当我转置数据框时,它显示 nan 值
【发布时间】:2020-12-28 20:12:56
【问题描述】:
import pymysql
import pandas as pd
import numpy

conn = pymysql.connect(host="localhost",port=3306,db="school",user="root",password="@mit123")
print("Connection established sucessfully")
cursor = conn.cursor()

sql = "SELECT * FROM records"
cursor.execute(sql)
result = cursor.fetchall()

data= result
df = pd.DataFrame(data)
df1=df.T
print(df)
print(df1)

df2 = pd.DataFrame(df1,index=["id","name","rollno.","city"])
print(df2)

以下是输出。什么可能导致问题?我不能将一个数据帧转置为另一个数据帧吗?

Connection established sucessfully
   0       1  2   3       4
0  1    amit  1  92  jorhat
1  2  subham  2  93  jorhat
2  3     ram  3  89   surat
3  4    anil  4  91   delhi
4  5   abdul  5  81  bhopal
5  6  joseph  6  90  sikkim
6  7     Ben  7  94  indore
7  8     tom  8  99     goa
        0       1      2      3       4       5       6    7
0       1       2      3      4       5       6       7    8
1    amit  subham    ram   anil   abdul  joseph     Ben  tom
2       1       2      3      4       5       6       7    8
3      92      93     89     91      81      90      94   99
4  jorhat  jorhat  surat  delhi  bhopal  sikkim  indore  goa
           0    1    2    3    4    5    6    7
id       NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
name     NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
rollno.  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
city     NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN

Process finished with exit code 0

这是我的 sql 表:

当我在数据框中使用索引时,它会显示形状错误:

Shape of passed values is (5, 8), indices imply (4, 8)

【问题讨论】:

  • 如果您将数据框创建为 df=pd.read_sql(sql=sql,con=conn) 会发生什么?
  • 原因可能是通过传递获取结果而不是通过 read_sql 生成数据帧时没有列名吗?
  • 请不要全部大写。看起来你在大喊大叫。

标签: python pandas dataframe nan transpose


【解决方案1】:

我可以使用我的数据库重现 NaN 错误。所以我认为原因是那里没有列名。 因此,您可以执行以下操作:

import pymysql
import pandas as pd
import numpy

conn = pymysql.connect(host="localhost",
                       port=3306,
                       db="school",
                       user="root",
                       password="@mit123")

print("Connection established sucessfully")

sql = "SELECT * FROM records"

df = pd.read_sql(con=conn,sql=sql)

df1=df.T
print(df)
print(df1)

df2 = pd.DataFrame(df1,index=["id","name","roll_number","city"])
print(df2)

这解决了 NaN 错误。 形状错误可能是由于您没有将“百分比”列传递给索引,但我无法重现此错误。

【讨论】:

  • 嘿,yky,这条线实际上是什么意思? df = pd.read_sql(con=conn,sql=sql)
  • 打印 df2 时,rollno 行显示的是 nan 值。
  • @cOde_monkey read_sql Reads SQL query or database table into a df。这是因为在您的数据库中名为 roll_number 的列,而不是 rollno,您可以在数据框中重命名它,或者在选择时重命名它,或者使用全名。我会编辑答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 2019-06-08
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
相关资源
最近更新 更多