我是Python的新手,因此在将a中的一行DataFrame
转换为flat时遇到了麻烦list
。为此,我使用以下代码:
玩具DataFrame
:
import pandas as pd
d = {
"a": [1, 2, 3, 4, 5],
"b": [9, 8, 7, 6, 5],
"n": ["a", "b", "c", "d", "e"]
}
df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)
我的代码:
df_note = df.loc[df.n == "d", ["a", "b"]].values #convert to array
df_note = df_note.tolist() #convert to nested list
df_note = reduce(lambda x, y: x + y, df_note) #convert to flat list
Run Code Online (Sandbox Code Playgroud)
对我来说,这段代码似乎既粗糙又效率低下。我array
在a之前转换为a 的事实list
是导致问题的原因,即list
嵌套。尽管如此,我找不到将行直接转换为列表的方法。有什么建议吗?
这个问题是不是愚弄的这个。就我而言,我希望清单不多。
您快到了,实际上只是使用flatten
而不是reduce
取消嵌套该数组(而不是取消嵌套该列表),并使用链式操作来获得一个衬里:
df.loc[df.n == "d", ['a','b']].values.flatten().tolist()
#[4, 6]
Run Code Online (Sandbox Code Playgroud)
您会得到一个嵌套列表,因为您选择了一个子数据框。
这需要一行,可以将其转换为列表而无需展平:
df.loc[0, :].values.tolist()
[1, 9, 'a']
Run Code Online (Sandbox Code Playgroud)
如何切片列表:
df_note.values.tolist()[0]
[4, 6]
Run Code Online (Sandbox Code Playgroud)
这些值存储在 NumPy 数组中。所以你不转换它们。Pandas 在底层使用了大量 NumPy。属性访问df_note.values
只是部分数据框的不同名称。
归档时间: |
|
查看次数: |
7089 次 |
最近记录: |