Python Jupyter数据帧-读取列值

Python Jupyter数据帧-读取列值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一段python代码,用于读取给定行的SQL列的值。下面的代码片段只是在DataFrame上下文中遍历列,并将数值附加到数组中 如果我打印出每列的值,输出看起来是正确的。然而,如果我打印出最终的数组,那么我会看到奇怪的格式(元数据) 怪异/元数据输出如下所示: [0 0 Name: colname1, dtype: int64, 0 8 Name: colname2, dtype: int64, 0 0 Name: colname3, dtype: int64, 0

我有一段python代码,用于读取给定行的SQL列的值。下面的代码片段只是在DataFrame上下文中遍历列,并将数值附加到数组中

如果我打印出每列的值,输出看起来是正确的。然而,如果我打印出最终的数组,那么我会看到奇怪的格式(元数据)

怪异/元数据输出如下所示:

[0    0
Name: colname1, dtype: int64, 0    8
Name: colname2, dtype: int64, 0    0
Name: colname3, dtype: int64, 0    0
Name: colname4, dtype: int64, 0    0
Name: colname5, dtype: int64, 0    0
Name: colname6, dtype: int64, 0    0
Name: colname7, dtype: int64, 0    0
Name: colname8, dtype: int64, 0    0
Name: colname9, dtype: int64, 0    0
Name: colname10, dtype: int64, 0    1
Name: colname11, dtype: int64, 0    0
Name: colname12, dtype: int64]
当我清楚地附加了数值时,为什么我会看到所有这些元数据内容?


请注意,数据帧是通过pd.read\u sql\u查询调用创建的。

我认为您需要将值转换为
numpy数组
,转置并转换为
列表

df = pd.DataFrame({
    'A': ['a','e','g'],
    'B': list(range(3))
})
print (df)
   A  B
0  a  0
1  e  1
2  g  2

L = df.values.T.tolist()
print (L)
[['a', 'e', 'g'], [0, 1, 2]]
values = []
for i in range(len(columns)):
        val = df[columns[i]];        
        values.append(val.tolist())
df = pd.DataFrame({
    'A': [0],
    'B': [3],
    'C' :[1]   
})
print (df)
   A  B  C
0  0  3  1

L = df.values.T.tolist()
print (L)
[[0], [3], [1]]

#select first row
L1 = df.iloc[0].tolist()
print (L1)
[0, 3, 1]
如果需要循环缓慢的解决方案,请将
系列
转换为
列表

df = pd.DataFrame({
    'A': ['a','e','g'],
    'B': list(range(3))
})
print (df)
   A  B
0  a  0
1  e  1
2  g  2

L = df.values.T.tolist()
print (L)
[['a', 'e', 'g'], [0, 1, 2]]
values = []
for i in range(len(columns)):
        val = df[columns[i]];        
        values.append(val.tolist())
df = pd.DataFrame({
    'A': [0],
    'B': [3],
    'C' :[1]   
})
print (df)
   A  B  C
0  0  3  1

L = df.values.T.tolist()
print (L)
[[0], [3], [1]]

#select first row
L1 = df.iloc[0].tolist()
print (L1)
[0, 3, 1]
如果只有一行
DataFrame
或需要在
df
中选择某一行,则使用
系列的按位置选择,然后转换为
列表

df = pd.DataFrame({
    'A': ['a','e','g'],
    'B': list(range(3))
})
print (df)
   A  B
0  a  0
1  e  1
2  g  2

L = df.values.T.tolist()
print (L)
[['a', 'e', 'g'], [0, 1, 2]]
values = []
for i in range(len(columns)):
        val = df[columns[i]];        
        values.append(val.tolist())
df = pd.DataFrame({
    'A': [0],
    'B': [3],
    'C' :[1]   
})
print (df)
   A  B  C
0  0  3  1

L = df.values.T.tolist()
print (L)
[[0], [3], [1]]

#select first row
L1 = df.iloc[0].tolist()
print (L1)
[0, 3, 1]


您需要
值。append(val.tolist())
值。append(list(val))
系列
转换为列表。或者可能需要
df.values.T.tolist()
?jupyter-*是不相关的标记,请不要添加它们。这是附加到值的唯一方法吗?实际上,我的df只有一行。我为列表添加了一行数据帧的解决方案。我能够使用df.iloc[0].tolist()获得我认为正确的值(一维数组)。但现在我得到了这个错误,“ValueError:形状不匹配:对象不能广播到单个形状”返回这个错误的dataframe是什么?它是空数据帧,还是其他什么?什么返回
打印(df.iloc[0])
?有问题的数据帧的打印(类型(df))是什么?谢谢