使用Pandas在dataframe中使用int创建字符串

时间:2016-02-11 04:24:53

标签: python r pandas

我知道在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组合成一个字符串?

2 个答案:

答案 0 :(得分:1)

IIUC您可以将AB列转换为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

如果您想比较两列AB - 这意味着两个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)

数据由整数组成,因此需要将这些转换为字符串。列AB中的数据已通过解除引用的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