格式化来自 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]]
我有一个 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]]