我是一个新的Python爱好者。 对于R用户,有一个函数:paste,它有助于连接数据帧中的两个或多个变量。这很有用。 例如 假设我有这个数据帧:
categorie titre tarifMin lieu long lat img dateSortie
1 zoo, Aquar 0.0 Aquar 2.385 48.89 ilo,0
2 zoo, Aquar 4.5 Aquar 2.408 48.83 ilo,0
6 lieu Jardi 0.0 Jardi 2.320 48.86 ilo,0
7 lieu Bois 0.0 Bois 2.455 48.82 ilo,0
13 espac Canal 0.0 Canal 2.366 48.87 ilo,0
14 espac Canal -1.0 Canal 2.384 48.89 ilo,0
15 parc Le Ma 20.0 Le Ma 2.353 48.87 ilo,0
我想创建一个新列,它使用数据框中的另一列和一些文本。有了R,我会:
> y$thecolThatIWant=ifelse(y$tarifMin!=-1,
+ paste("Evenement permanent -->",y$categorie,
+ y$titre,"C partir de",y$tarifMin,"€uros"),
+ paste("Evenement permanent -->",y$categorie,
+ y$titre,"sans prix indique"))
结果是:
> y
categorie titre tarifMin lieu long lat img dateSortie
1 zoo, Aquar 0.0 Aquar 2.385 48.89 ilo,0
2 zoo, Aquar 4.5 Aquar 2.408 48.83 ilo,0
6 lieu Jardi 0.0 Jardi 2.320 48.86 ilo,0
7 lieu Bois 0.0 Bois 2.455 48.82 ilo,0
13 espac Canal 0.0 Canal 2.366 48.87 ilo,0
14 espac Canal -1.0 Canal 2.384 48.89 ilo,0
15 parc Le Ma 20.0 Le Ma 2.353 48.87 ilo,0
thecolThatIWant
1 Evenement permanent --> zoo, Aquar C partir de 0.0 €uros
2 Evenement permanent --> zoo, Aquar C partir de 4.5 €uros
6 Evenement permanent --> lieu Jardi C partir de 0.0 €uros
7 Evenement permanent --> lieu Bois C partir de 0.0 €uros
13 Evenement permanent --> espac Canal C partir de 0.0 €uros
14 Evenement permanent --> espac Canal C partir de -1.0 €uros
15 Evenement permanent --> parc Le Ma C partir de 20.0 €uros
我的问题是:如何在Python Pandas或其他模块中执行相同的操作?
到目前为止我尝试过的:嗯,我是一个非常新的用户。很抱歉我的错误。我试图用Python复制这个例子,我们假设我得到了这样的结果
table=pd.read_csv("y.csv",sep=",")
tt= table.loc[:,['categorie','titre','tarifMin','long','lat','lieu']]
table
ategorie titre tarifMin long lat lieu
0 zoo, Aquar 0.0 2.385 48.89 Aquar
1 zoo, Aquar 4.5 2.408 48.83 Aquar
2 lieu Jardi 0.0 2.320 48.86 Jardi
3 lieu Bois 0.0 2.455 48.82 Bois
4 espac Canal 0.0 2.366 48.87 Canal
5 espac Canal -1.0 2.384 48.89 Canal
6 parc Le Ma 20.0 2.353 48.87 Le Ma
我基本上试过了
sc="Even permanent -->" + " "+ tt.titre+" "+tt.lieu
tt['theColThatIWant'] = sc
tt
我得到了这个
categorie titre tarifMin long lat lieu theColThatIWant
0 zoo, Aquar 0.0 2.385 48.89 Aquar Even permanent --> Aquar Aquar
1 zoo, Aquar 4.5 2.408 48.83 Aquar Even permanent --> Aquar Aquar
2 lieu Jardi 0.0 2.320 48.86 Jardi Even permanent --> Jardi Jardi
3 lieu Bois 0.0 2.455 48.82 Bois Even permanent --> Bois Bois
4 espac Canal 0.0 2.366 48.87 Canal Even permanent --> Canal Canal
5 espac Canal -1.0 2.384 48.89 Canal Even permanent --> Canal Canal
6 parc Le Ma 20.0 2.353 48.87 Le Ma Even permanent --> Le Ma Le Ma
现在,我想如果没有像R中那样的向量化,我就必须用条件循环?
对于这种特殊情况,} ,后者是在Python 2.6中添加的。它比老的
R
中的paste
运算符最接近Python的^{%
操作程序更新,而且更灵活。对于一个不使用numpy或pandas的纯Python ic答案,这里有一种方法可以使用列表形式的原始数据(这也可以作为dict列表来完成,但对我来说似乎更混乱)。
结果是:
请注意,虽然我定义了一个列表
names
,但实际上并没有使用它。我们可以定义一个字典,其中标题的名称是键,字段号(从0开始)是值,但我不想费心让示例变得简单。函数
prix
和msg
相当简单。唯一棘手的部分是列表理解[m.append(msg(m)) for m in records]
,它遍历所有记录,并修改每个记录以附加通过调用msg
创建的新字段。这非常像R中的Paste命令: R代码:
[一]
Python:
结果:
这里有一个简单的实现,它可以在列表上工作,也可以在其他的iterable上工作。警告:它只经过了轻微的测试,而且仅在Python3.5中:
您还可以享受更多乐趣并复制其他函数,如
paste0
:相关问题 更多 >
编程相关推荐