所有内容都在标题中: python pandas dataframe中的一列可以是列表、集合或元组或...?
import pandas as pd
lnks = [ ( 'a' , 'b') , ( 'b' , 'c') , ( 'c' , 'a' ) , ('b' , 'd' ) , ( 'd' , 'a' ) ]
lbls = [ 'x' , 'y']
df = pd.DataFrame.from_records( lnks , columns = lbls )
尝试从列x和y行值构建类型为ensemble的新列z:
df[ 'z' ] = { df[ 'x' ] , df[ 'y' ] }
我得到以下错误代码:
TypeError:“Series”对象是可变的,因此它们不能是哈希
我想要获取包含以下内容的数据帧:
x y z
'a' 'b' { 'a , 'b' }
'b' 'c' { 'b' , 'c' }
'c' 'a' { 'c' , 'a' }
...
谢谢你的帮助。
发布于 2019-03-02 08:23:04
对于元组,使用带有axis=1
的apply
用于按行处理:
df[ 'z' ] = df.apply(lambda x: (x[ 'x' ] , x[ 'y' ]), axis=1)
print (df)
x y z
0 a b (a, b)
1 b c (b, c)
2 c a (c, a)
3 b d (b, d)
4 d a (d, a)
发布于 2019-03-02 08:24:37
这一点:
lnks = [('a', 'b'), ('b', 'c'), ('c', 'a'), ('b', 'd'), ('d', 'a')]
lbls = ['x', 'y']
df = pd.DataFrame.from_records(lnks, columns=lbls)
df['z'] = df.apply(lambda r: ( r.x, r.y ), axis=1) #if you want a tuple
或
df['z'] = df.apply(lambda r: [r.x, r.y ], axis=1) #if you want a list
print(df)
https://stackoverflow.com/questions/54956545
复制相似问题