Pandas Dataframe字符串列到连接Int

时间:2016-04-12 13:30:49

标签: python pandas

为简单起见,假设我们有一个包含字符串值的单列的数据框。我想创建第二列,其中包含一个整数,该整数表示串联形式的字符串中每个字符的ASCII值。请看下面。假设列A是我们的,B列是我们想要的。

Column_A    Column_B
  JJIIV    7474737386
  OOEWW    7979698787
  ZZXSW    9090888387
  QLHMN    8176727778
  WESDFG   876983687071

好的,所以看看A列中的第一个值JJIIV,我们通过以下步骤在B列中得出结果:1)将JJIIV分解为J' J' J& #39;,'我','我'' V&#39 ;. 2)取每个角色的ord()。 ord(' J')== 74等.3)连接每个ord值以创建bigint。

到目前为止,我能够完成以下任务。我只是不确定如何在数据框中创建额外的列并且'应用'每一行的逻辑。

import pandas as pd

raw_data = {'string_column': ['JJIIV', 'OOEWW', 'ZZXSW', 'QLHMN', 'WESDFG']}
df = pd.DataFrame(raw_data, columns = ['string_column'])

for i in df['string_column']:
    print([ord(c) for c in i])

1 个答案:

答案 0 :(得分:0)

您可以使用appplylambda加入序数值来创建值的字符串:

In [114]:    
df['ord'] = df['string_column'].apply(lambda x: ''.join([str(ord(e)) for e in x])).astype(np.int64)
df

Out[114]:
  string_column           ord
0         JJIIV    7474737386
1         OOEWW    7979698787
2         ZZXSW    9090888387
3         QLHMN    8176727778
4        WESDFG  876983687071

您可以将dtype转换为int64进行转换,请注意最后一个条目不适合32位int