此代码在pandas版本0.23.4中工作,但在0.25.1及更高版本中抛出一个错误。
import numpy as np
import pandas as pd
df = pd.DataFrame({'a':[1,2,3], 'b': [[0,1], [5], [10]]})
df
a b
0 1 [0, 1]
1 2 [5]
2 3 [10]
# both lines below throw an error in newer versions
df['b'] += [42]
df.loc[df['a']==3, 'b'] += [73]
df
# desired output that works in 0.23.4
a b
0 1 [0, 1, 42]
1 2 [5, 42]
2 3 [10, 42, 73]在以后的版本中,附加在细胞中的列表是如何工作的呢?
发布于 2020-08-27 09:58:27
试一试
df['b'].apply(lambda x: x.append(42))
df.loc[df['a']==3, 'b'].apply(lambda x: x.append(73))(在熊猫版本1.0.5上测试)
发布于 2020-08-27 09:58:26
以下是两种方法:
方法1
df['b'] = pd.concat([df['b'], pd.Series(42)], axis=1)['b']
df.loc[df['a']==3, 'b'] = df.loc[df['a']==3, 'b'].to_numpy().tolist()[0] + [73]方法2
from itertools import zip_longest
ls = list(zip_longest(df['b'], [42]))
df['b'] = [x[0] for x in ls]
print(df)
a b
0 1 [0, 1, 42]
1 2 [5, 42]
2 3 [10, 42]https://stackoverflow.com/questions/63613194
复制相似问题