Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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 我想在dataframe中对列值进行编码_Python_Pandas_Dataframe - Fatal编程技术网

Python 我想在dataframe中对列值进行编码

Python 我想在dataframe中对列值进行编码,python,pandas,dataframe,Python,Pandas,Dataframe,我想对pandas dataframe中的列值进行编码,例如所有字母都应转换为单个字母(例如,'vault'到'nnnn','Nan123'到'NNNDDD') 我在想这样的事情: df['TransDetails'] = df['TransDetails'].str.replace('A', 'N') 我的数据: TransDetails 0 NEFT-PUNB0315500-JITENDER SING 1 NEFT-UTIB0CCH274-VIRENDER KUMA 2

我想对pandas dataframe中的列值进行编码,例如所有字母都应转换为单个字母(例如,
'vault'
'nnnn'
'Nan123'
'NNNDDD'

我在想这样的事情:

df['TransDetails'] = df['TransDetails'].str.replace('A', 'N')
我的数据:

    TransDetails
0   NEFT-PUNB0315500-JITENDER SING
1   NEFT-UTIB0CCH274-VIRENDER KUMA
2   NEFT-UTIB0CCH274-SUNITA DEVI
3   NEFT-PUNB0315500-AMLASH KUMAR
4   NEFT-PUNB0109800-FARIDUDDEN
5   NEFT-PUNB0109800-IDREESH
6   NEFT-PUNB0315500-BUDDHU
7   NEFT-UTIB0CCH274-SAKIL AHAMAD
8   NEFT-UTIB0CCH274-NAIM AHAMAD
9   NEFT-UTIB0CCH274-SALIM AHAMAD
10  NEFT-UTIB0CCH274-NADIM AHAMAD

如何转换此类代码中的所有列值?提前感谢

您可以使用正则表达式来处理替换

df['TransDetails'] = df['TransDetails'].str.replace('[A-Za-z]', 'N')
df['TransDetails'] = df['TransDetails'].str.replace('\d', 'D')

df
# returns:
                      TransDetails
0   NNNN-NNNNDDDDDDD-NNNNNNNN NNNN
1   NNNN-NNNNDNNNDDD-NNNNNNNN NNNN
2     NNNN-NNNNDNNNDDD-NNNNNN NNNN
3    NNNN-NNNNDDDDDDD-NNNNNN NNNNN
4      NNNN-NNNNDDDDDDD-NNNNNNNNNN
5         NNNN-NNNNDDDDDDD-NNNNNNN
6          NNNN-NNNNDDDDDDD-NNNNNN
7    NNNN-NNNNDNNNDDD-NNNNN NNNNNN
8     NNNN-NNNNDNNNDDD-NNNN NNNNNN
9    NNNN-NNNNDNNNDDD-NNNNN NNNNNN
10   NNNN-NNNNDNNNDDD-NNNNN NNNNNN

您可以使用正则表达式来处理替换

df['TransDetails'] = df['TransDetails'].str.replace('[A-Za-z]', 'N')
df['TransDetails'] = df['TransDetails'].str.replace('\d', 'D')

df
# returns:
                      TransDetails
0   NNNN-NNNNDDDDDDD-NNNNNNNN NNNN
1   NNNN-NNNNDNNNDDD-NNNNNNNN NNNN
2     NNNN-NNNNDNNNDDD-NNNNNN NNNN
3    NNNN-NNNNDDDDDDD-NNNNNN NNNNN
4      NNNN-NNNNDDDDDDD-NNNNNNNNNN
5         NNNN-NNNNDDDDDDD-NNNNNNN
6          NNNN-NNNNDDDDDDD-NNNNNN
7    NNNN-NNNNDNNNDDD-NNNNN NNNNNN
8     NNNN-NNNNDNNNDDD-NNNN NNNNNN
9    NNNN-NNNNDNNNDDD-NNNNN NNNNNN
10   NNNN-NNNNDNNNDDD-NNNNN NNNNNN
一种方法是使用。这样可以避免更改数字列

df.replace('[A-Za-z]','N', regex=True).replace('\d','D', regex=True)
完整示例包括一个名为
D
的数字列,一个名为
N
TransDetails
的非数字列

import pandas as pd

data = '''\
D,N,TransDetails
1,ABC,NEFT-PUNB0315500-JITENDER SING
1,123,NEFT-UTIB0CCH274-VIRENDER KUMA
1,123,NEFT-UTIB0CCH274-SUNITA DEVI
1,123,NEFT-PUNB0315500-AMLASH KUMAR
1,123,NEFT-PUNB0109800-FARIDUDDEN
1,123,NEFT-PUNB0109800-IDREESH
1,123,NEFT-PUNB0315500-BUDDHU
1,123,NEFT-UTIB0CCH274-SAKIL AHAMAD
1,123,NEFT-UTIB0CCH274-NAIM AHAMAD
1,123,NEFT-UTIB0CCH274-SALIM AHAMAD
1,123,NEFT-UTIB0CCH274-NADIM AHAMAD'''

fileobj = pd.compat.StringIO(data) # or 'path/to/csv'
df = pd.read_csv(fileobj)
df = df.replace('[A-Za-z]','N', regex=True).replace('\d','D', regex=True)
print(df)
返回:

    D    N                    TransDetails
0   1  NNN  NNNN-NNNNDDDDDDD-NNNNNNNN NNNN
1   1  DDD  NNNN-NNNNDNNNDDD-NNNNNNNN NNNN
2   1  DDD    NNNN-NNNNDNNNDDD-NNNNNN NNNN
3   1  DDD   NNNN-NNNNDDDDDDD-NNNNNN NNNNN
4   1  DDD     NNNN-NNNNDDDDDDD-NNNNNNNNNN
5   1  DDD        NNNN-NNNNDDDDDDD-NNNNNNN
6   1  DDD         NNNN-NNNNDDDDDDD-NNNNNN
7   1  DDD   NNNN-NNNNDNNNDDD-NNNNN NNNNNN
8   1  DDD    NNNN-NNNNDNNNDDD-NNNN NNNNNN
9   1  DDD   NNNN-NNNNDNNNDDD-NNNNN NNNNNN
10  1  DDD   NNNN-NNNNDNNNDDD-NNNNN NNNNNN
一种方法是使用。这样可以避免更改数字列

df.replace('[A-Za-z]','N', regex=True).replace('\d','D', regex=True)
完整示例包括一个名为
D
的数字列,一个名为
N
TransDetails
的非数字列

import pandas as pd

data = '''\
D,N,TransDetails
1,ABC,NEFT-PUNB0315500-JITENDER SING
1,123,NEFT-UTIB0CCH274-VIRENDER KUMA
1,123,NEFT-UTIB0CCH274-SUNITA DEVI
1,123,NEFT-PUNB0315500-AMLASH KUMAR
1,123,NEFT-PUNB0109800-FARIDUDDEN
1,123,NEFT-PUNB0109800-IDREESH
1,123,NEFT-PUNB0315500-BUDDHU
1,123,NEFT-UTIB0CCH274-SAKIL AHAMAD
1,123,NEFT-UTIB0CCH274-NAIM AHAMAD
1,123,NEFT-UTIB0CCH274-SALIM AHAMAD
1,123,NEFT-UTIB0CCH274-NADIM AHAMAD'''

fileobj = pd.compat.StringIO(data) # or 'path/to/csv'
df = pd.read_csv(fileobj)
df = df.replace('[A-Za-z]','N', regex=True).replace('\d','D', regex=True)
print(df)
返回:

    D    N                    TransDetails
0   1  NNN  NNNN-NNNNDDDDDDD-NNNNNNNN NNNN
1   1  DDD  NNNN-NNNNDNNNDDD-NNNNNNNN NNNN
2   1  DDD    NNNN-NNNNDNNNDDD-NNNNNN NNNN
3   1  DDD   NNNN-NNNNDDDDDDD-NNNNNN NNNNN
4   1  DDD     NNNN-NNNNDDDDDDD-NNNNNNNNNN
5   1  DDD        NNNN-NNNNDDDDDDD-NNNNNNN
6   1  DDD         NNNN-NNNNDDDDDDD-NNNNNN
7   1  DDD   NNNN-NNNNDNNNDDD-NNNNN NNNNNN
8   1  DDD    NNNN-NNNNDNNNDDD-NNNN NNNNNN
9   1  DDD   NNNN-NNNNDNNNDDD-NNNNN NNNNNN
10  1  DDD   NNNN-NNNNDNNNDDD-NNNNN NNNNNN

所有列值?还是仅仅是dtype='object'?可能您只想将一个简单的
.apply()
axis=1
yes所有列值一起使用。我尝试了.apply(),但它一次替换一个字符。我想要一些可以将所有字母更改为单个字母的东西。在这种情况下,您可能可以使用df.replace()。所有列值?还是仅仅是dtype='object'?可能您只想将一个简单的
.apply()
axis=1
yes所有列值一起使用。我尝试了.apply(),但它一次替换一个字符。我想要一些可以将所有字母更改为单个字母的东西。在这种情况下,您可能可以使用df.replace()。嘿,谢谢,它确实适用于所有字母,但不适用于数字。它把所有的数字都改成了N卡通谢谢,它对所有的字母都有效,但对数字无效。它把所有的数字都改为N个,效果很好。我可以直接在csv上使用吗?@nehaj不客气。快乐编程。您可以将fileobj更改为csv路径。谢谢您的好友!!帮我省了不少时间。嗨!如何转换csv文件中的指数值?我不希望那个加号(+)出现在conversion@nehaj嘿对不起,您指的是什么(+)符号?我想你应该用一些数据来回答一个新问题!:)谢谢,效果很好。我可以直接在csv上使用吗?@nehaj不客气。快乐编程。您可以将fileobj更改为csv路径。谢谢您的好友!!帮我省了不少时间。嗨!如何转换csv文件中的指数值?我不希望那个加号(+)出现在conversion@nehaj嘿对不起,您指的是什么(+)符号?我想你应该用一些数据来回答一个新问题!:)