如何用一个系列中的pandas数据框中的列替换?

时间:2018-02-01 10:41:31

标签: pandas

让我们在pandas中有一个数据框 df 和一系列 s1

import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randn(10000,1000))
s1 = pd.Series(range(0,10000))

如何修改 df 以使列42等于 s1

如何修改 df 以使42和442之间的列等于 s1

我想知道最简单的方法,但也是一种方法。

1 个答案:

答案 0 :(得分:0)

我认为您首先要v1 <- unlist(lst1) relist(replace(v1, is.nan(v1), 0), skeleton = lst1) #$v1 #[1] 1 0 3 #$v2 #[1] 3 2 0 #$v3 #[1] 0 1 3 Series相同,DataFrame

20

<强>计时

另一种解决方案,但似乎np.random.seed(456) df = pd.DataFrame(np.random.randn(20,10)) #print (df) s1 = pd.Series(range(0,20)) #print (s1) #set column by Series df[8] = s1 #set Series to range of columns cols = df.loc[:, 3:5].columns df[cols] = pd.concat([s1] * len(cols), axis=1) print (df) 0 1 2 3 4 5 6 7 8 9 0 -0.668129 -0.498210 0.618576 0 0 0 0.301966 0.449483 0 -0.315231 1 -2.015971 -1.130231 -1.111846 1 1 1 1.915676 0.920348 1 1.157552 2 -0.106208 -0.088752 -0.971485 2 2 2 -0.366948 -0.301085 2 1.141635 3 -1.309529 -0.274381 0.864837 3 3 3 0.670294 0.086347 3 -1.212503 4 0.120359 -0.358880 1.199936 4 4 4 0.389167 1.201631 4 0.445432 5 -1.031109 0.067133 -1.213451 5 5 5 -0.636896 0.013802 5 1.726135 6 -0.491877 0.254206 -0.268168 6 6 6 0.671070 -0.633645 6 1.813671 7 0.080433 -0.882443 1.152671 7 7 7 0.249225 1.385407 7 1.010374 8 0.307274 0.806150 0.071719 8 8 8 1.133853 -0.789922 8 -0.286098 9 -0.767206 1.094445 1.603907 9 9 9 0.083149 2.322640 9 0.396845 10 -0.740018 -0.853377 -2.039522 10 10 10 0.764962 -0.472048 10 -0.071255 11 -0.238565 1.077573 2.143252 11 11 11 1.542892 2.572560 11 -0.803516 12 -0.139521 -0.992107 -0.892619 12 12 12 0.259612 -0.661760 12 -1.508976 13 -1.077001 0.381962 0.205388 13 13 13 -0.023986 -1.293080 13 1.846402 14 -0.714792 -0.728496 -0.127079 14 14 14 0.606065 -2.320500 14 -0.992798 15 -0.127113 -0.563313 -0.101387 15 15 15 0.647325 -0.816023 15 -0.309938 16 -1.151304 -1.673719 0.074930 16 16 16 -0.392157 0.736714 16 1.142983 17 -1.247396 -0.471524 1.173713 17 17 17 -0.005391 0.426134 17 0.781832 18 -0.325111 0.579248 0.040363 18 18 18 0.361926 0.036871 18 0.581314 19 -1.057501 -1.814500 0.109628 19 19 19 -1.738658 -0.061883 19 0.989456 解决方案最快:

concat