Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将多个函数的输出组合到一个pd.Series中(如R中的c())_Python_Pandas_Numpy - Fatal编程技术网

在python中将多个函数的输出组合到一个pd.Series中(如R中的c())

在python中将多个函数的输出组合到一个pd.Series中(如R中的c()),python,pandas,numpy,Python,Pandas,Numpy,我一直在使用R进行数据分析,并试图学习python。在R中,我可以使用c()创建向量,这将返回一个由我传递的任何内容生成的“列”。我经常使用它来连接序列或重复值。大概是这样的: > test <- c(rep(1:2, each = 2), seq(5, 10, by = 2), runif(3)) > test [1] 1.0000000 1.0000000 2.0000000 2.0000000 5.0000000 7.0000000 9.0000000 [8] 0.9

我一直在使用
R
进行数据分析,并试图学习
python
。在R中,我可以使用
c()
创建向量,这将返回一个由我传递的任何内容生成的“列”。我经常使用它来连接序列或重复值。大概是这样的:

> test <- c(rep(1:2, each = 2), seq(5, 10, by = 2), runif(3))
> test
 [1] 1.0000000 1.0000000 2.0000000 2.0000000 5.0000000 7.0000000 9.0000000
 [8] 0.9237168 0.5051230 0.2367923
这给我带来了一种嵌套的东西:

0                                        [1, 1, 2, 2]
1                                           [5, 7, 9]
2    [0.989736164378, 0.558979301843, 0.385354683044]
dtype: object
我知道我可以,但那似乎太过分了。我神奇地用谷歌搜索到其中包含了我从未听说过的可能有用的
tolist()
函数。虽然这是关于将一行数据帧(?)放入一个
pd.Series
,但函数似乎可以做到这一点

结合我可以使用
+
添加列表(从第一个链接问题中收集),以及上一个链接问题的
tolist()
位,我发现:

test1 = np.repeat([1, 2], 2).tolist()
test2 = np.arange(5, 10, 2).tolist()
test3 = np.random.random_sample(3).tolist()

test = pd.Series(test1 + test2 + test3)

0    1.000000
1    1.000000
2    2.000000
3    2.000000
4    5.000000
5    7.000000
6    9.000000
7    0.472650
8    0.077398
9    0.672734
dtype: float64
希望我想做的是清楚的。我喜欢使用
c()
,您可以传入任何您想要的内容,并且可以以所需的模式优雅地将一系列生成的数字串在一起。我很惊讶用一个
pd.Series
来做这件事有多么困难,并由此推断我做错了


通常如何使用
python

如果从numpy数组开始,可以使用:


如果从
pandas.Series
对象开始,可以从一个系列到另一个系列:

s1 = pd.Series(np.repeat([1, 2], 2))
s2 = pd.Series(np.arange(5, 10, 2))
s3 = pd.Series(np.random.random_sample(3))
​    
s1.append([s2, s3], ignore_index=True)
#0    1.000000
#1    1.000000
#2    2.000000
#3    2.000000
#4    5.000000
#5    7.000000
#6    9.000000
#7    0.766968
#8    0.730897
#9    0.196995
#dtype: float64
或使用
pd.concat
方法:

pd.concat([s1, s2, s3], ignore_index=True)

谢谢你。没有我希望的那么短,但这很有帮助。你的意思是让pd.np.concatenate(…)?我想知道你的意思是不是
pd.Series(np.concatenate(…)
?当然这比不上
c()
:)。如果您想要一个Series对象作为结果,那么您需要将
pd.Series
包装为
pd.Series(np.concatenate(…)
pd.np.concatenate
也是一种有效的语法,如果已经导入了
pandas
,可以避免再次导入
numpy
。很高兴知道。我可能真的不知道我是否需要一个系列,因为我太新了。我把它作为一个新列反馈到一个
pd.DataFrame
,所以我假设是这样。不管是哪种情况,这都是非常好的解决方法!
s1 = pd.Series(np.repeat([1, 2], 2))
s2 = pd.Series(np.arange(5, 10, 2))
s3 = pd.Series(np.random.random_sample(3))
​    
s1.append([s2, s3], ignore_index=True)
#0    1.000000
#1    1.000000
#2    2.000000
#3    2.000000
#4    5.000000
#5    7.000000
#6    9.000000
#7    0.766968
#8    0.730897
#9    0.196995
#dtype: float64
pd.concat([s1, s2, s3], ignore_index=True)