格式化来自 python pandas 数据框 iterrows() 的行输出

formatting row output from python pandas dataframe iterrows()

我有一个 python pandas 数据框 (my_df)。我想使用 iterrows() 提取行,然后将行转换为列表,最后将行转换列表附加到列表列表 (my_list)。

import pandas as pd

# DATA 
data = {'a': [8, 8, 8, 7],
    'b': [7, 8, 8, 8],
    'c': [7, 7, 8, 8],
    'd': [7, 7, 7, 7]
    }
my_df = pd.DataFrame(data, columns = ['a', 'b', 'c', 'd'])

print(my_df)
   a  b  c  d
0  8  7  7  7
1  8  8  7  7
2  8  8  8  7
3  7  8  8  7

问题是我在 iterrows() 中从 row 获得的格式,因为除了我要查找的裸数据外,它还包含其他信息。如何删除附加信息,以便获得我的 所需输出 (请参阅下面的代码)?

谢谢!

# CODE 
my_list = []
for index, row in my_df.iterrows():
    my_list.append([row])


# OUTPUT
print(my_list)
[[a    8
b    7
c    7
d    7
Name: 0, dtype: int64], [a    8
b    8
c    7
d    7
Name: 1, dtype: int64], [a    8
b    8
c    8
d    7
Name: 2, dtype: int64], [a    7
b    8
c    8
d    7
Name: 3, dtype: int64]]


# DESIRE OUTPUT 
[[8, 7, 7, 7], [8, 8, 7, 7], [8, 8, 8, 7], [7, 8, 8, 7]]

只需使用tolist:

my_list = []
for index, row in my_df.iterrows():
    my_list.append(row.tolist())
print(my_list)

输出:

[[8, 7, 7, 7], [8, 8, 7, 7], [8, 8, 8, 7], [7, 8, 8, 7]]

你做的非常低效,只需要使用底层的numpy数组:

my_df.values.tolist()

输出:

[[8, 7, 7, 7], [8, 8, 7, 7], [8, 8, 8, 7], [7, 8, 8, 7]]
list(map(list,my_df.values))

输出:

[[8, 7, 7, 7], [8, 8, 7, 7], [8, 8, 8, 7], [7, 8, 8, 7]]

检查itertuples方法,它为每一行提供namedtuple,然后可以很容易地转换为列表

import pandas as pd

# DATA 
data = {'a': [8, 8, 8, 7],
    'b': [7, 8, 8, 8],
    'c': [7, 7, 8, 8],
    'd': [7, 7, 7, 7]
    }
my_df = pd.DataFrame(data, columns = ['a', 'b', 'c', 'd'])
my_list = [list(i) for i in my_df.itertuples()]
print(my_list)

输出

[[0, 8, 7, 7, 7], [1, 8, 8, 7, 7], [2, 8, 8, 8, 7], [3, 7, 8, 8, 7]]