我知道在R中,如果我读入csv文件并将其存储在数据框df
中,如下面
A B
1 2
3 4
我可以通过输入
创建一个存储10_1+2
之类的值的向量
s<-vector()
for(i in c(1:nrow(df)) {
r<-df[i,]
s<-paste("10,"_",r$A,"+",r$B)
}
我如何在Python中使用Pandas,我可以将int和char组合成一个字符串?
答案 0 :(得分:1)
IIUC您可以将A
和B
列转换为astype
字符串,然后将其标记为:
import pandas as pd
df = pd.DataFrame({'A': [1,3],'B': [2,4]})
print df
A B
0 1 2
1 3 4
s = '10' + '_' + df['A'].astype(str) + '+' + df['B'].astype(str)
print s
0 10_1+2
1 10_3+4
dtype: object
如果您想比较两列A
和B
- 这意味着两个Series
使用条件和子集,然后进行跟踪:
import pandas as pd
df = pd.DataFrame({'A': [1,5],'B': [2,4]})
print df
A B
0 1 2
1 5 4
print df.A > df.B
0 False
1 True
dtype: bool
df1 = df[df.A > df.B]
print df1
A B
1 5 4
s = '10' + '_' + df1['A'].astype(str) + '+' + df1['B'].astype(str)
print s
1 10_5+4
dtype: object
答案 1 :(得分:0)
数据由整数组成,因此需要将这些转换为字符串。列A
和B
中的数据已通过解除引用的join
操作(因此为星号)传递给zip
函数。
string_int_list = ["10_" + "+".join((str(a), str(b)))
for a, b in zip(*(df.A, df.B))]
>>> pd.Series(string_int_list)
0 10_1+2
1 10_3+4
dtype: object