我在修改新列时遇到问题。
import pandas as pd
import numpy as np
da=np.array([[[1,2], 1,2,100],[[1,2], 1,3,100],[[1,2], 4,1,100], [[1,2], 5,6,101], [[1,2], 7,9,102], [[1,2], 8,7,102]])
col = ['N', 'NRW', 'NRW_1', 'NRW_2']
ramka = pd.DataFrame(columns = col, data = da)
print (ramka)
ramka['TEST'] = ramka['NRW'].apply(lambda x: x+3)
print (ramka)
这里还可以。我得到一个 NRW+3 的新列。 NRW 不变。
ramka['TEST2'] = ramka['N'].apply(lambda x: x.append(555))
print (ramka)
这里我得到了没有的新专栏。 N 列已更改。为什么?
如果我复制 N 列
ramka['TEST4'] = ramka['N']
并对新列执行相同的操作,更改将应用于 N 列和 TEST4
ramka['TEST4'].apply(lambda x: x.append(666))
print (ramka)
我不明白。请帮忙。
list.append
已就位(因此返回 None
),您应该使用:
ramka['TEST2'] = ramka['N'].apply(lambda x: x+[555])
请注意,要将标量添加到数字列,您不应使用
apply
,而是:
ramka['TEST'] = ramka['NRW']+3
输出:
N NRW NRW_1 NRW_2 TEST TEST2
0 [1, 2] 1 2 100 4 [1, 2, 555]
1 [1, 2] 1 3 100 4 [1, 2, 555]
2 [1, 2] 4 1 100 7 [1, 2, 555]
3 [1, 2] 5 6 101 8 [1, 2, 555]
4 [1, 2] 7 9 102 10 [1, 2, 555]
5 [1, 2] 8 7 102 11 [1, 2, 555]