mko*_*ala 12 python dataframe pandas
我有一个Pandas DataFrame,其中包含列表对象的列
A
0 [1,2]
1 [3,4]
2 [8,9]
3 [2,6]
Run Code Online (Sandbox Code Playgroud)
如何访问每个列表的第一个元素并将其保存到DataFrame的新列中?要得到这样的结果:
A new_col
0 [1,2] 1
1 [3,4] 3
2 [8,9] 8
3 [2,6] 2
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过遍历每一行来完成,但是有任何"pythonic"方式吗?
DSM*_*DSM 20
与往常一样,请记住,在帧中存储非标量对象通常是不受欢迎的,并且实际上应该仅用作临时中间步骤.
也就是说,你可以使用.str访问器,即使它不是一列字符串:
>>> df = pd.DataFrame({"A": [[1,2],[3,4],[8,9],[2,6]]})
>>> df["new_col"] = df["A"].str[0]
>>> df
A new_col
0 [1, 2] 1
1 [3, 4] 3
2 [8, 9] 8
3 [2, 6] 2
>>> df["new_col"]
0 1
1 3
2 8
3 2
Name: new_col, dtype: int64
Run Code Online (Sandbox Code Playgroud)
dmb*_*dmb 12
你可以使用map和lambda功能
df.loc[:, 'new_col'] = df.A.map(lambda x: x[0])
Run Code Online (Sandbox Code Playgroud)
jez*_*ael 10
使用apply有x[0]:
df['new_col'] = df.A.apply(lambda x: x[0])
print df
A new_col
0 [1, 2] 1
1 [3, 4] 3
2 [8, 9] 8
3 [2, 6] 2
Run Code Online (Sandbox Code Playgroud)
Myk*_*tko 10
df['A'].str.get(0)
Run Code Online (Sandbox Code Playgroud)
它的行为类似于 Python 字典的get方法,NaN如果缺少所需的索引则返回。例如:
s = pd.Series([[1, 2], []])
s.str.get(0) # s.str[0]
Run Code Online (Sandbox Code Playgroud)
输出:
0 1.0
1 NaN
dtype: float64
Run Code Online (Sandbox Code Playgroud)