df = pd.DataFrame({'x':['a','b','c','d'],'y':[[1],[3,4],[2],[5]]})
我想提取列表[3,4]
,所以我做了
df.loc[df.x=='b','y'].tolist()
但它返回一个嵌套列表。
[[3,4]]
如何从数据框中获取非嵌套列表?
答案 0 :(得分:2)
您可以在explode
之前
df1=df.explode('y')
df1.loc[df1.x=='b','y'].tolist()
...
[3, 4]
也很简单
df.loc[df.x=='b','y']
[3, 4]
答案 1 :(得分:2)
您的import java.util.*;
import java.lang.*;
import java.io.*;
import static java.util.List.of;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
List<String> A = of("a", "ah", "A", "ay");
List<String> B = of("B", "b", "bee", "Bea");
List<String> C = of("sea", "Cee", "C++", "c", "Si", "C#");
List<String> D = of("D", "d", "dee", "Di", "Dee-Dee Ramone", "Sunny D");
List<Number> N1 = of(777);
List<Number> N2 = of(-93.11D);
List<Number> N3 = of(867.5f);
List<Number> N4 = of(-309L);
List<String>[] litzs = toArray(A, B, C, D);
List<Number>[] nzs = toArray(N1, N2, N3, N4);
/*...use them however...*/
}
private static <T> List<T>[] toArray(List<T> ... lists){
return lists;
}
}
表达式返回一个序列而不是标量,您只需要选择其第一个也是唯一一个元素:
loc
答案 2 :(得分:1)
如果您要获取单个单元格值,请尝试df.at
,它可以保证单个值:
df.at[pd.Index(df['x']).get_loc('b'), 'y']
# [3, 4]
如果密钥不存在,则此解决方案肯定会失败:
df.at[pd.Index(df['x']).get_loc('xyz'), 'y']
# KeyError: 'xyz'
pd.Index(df['x']).get_loc('b')
表达式也可以替换为df['x'].eq(b).argmax()
,但要警告,如果“ b”不存在,它将返回不正确的结果。
答案 3 :(得分:0)
尝试loc
和squeeze
In [621]: df.loc[df.x=='b','y'].squeeze()
Out[621]: [3, 4]