изменить значения файла CSV в целочисленное значение словаря - PullRequest
0 голосов
/ 27 января 2020

У меня есть список значений .csv (C3, H5, HK, HA, SK) (имена столбцов: card1, card2, card3, card4, card5) и я хочу изменить, например, C3, на целочисленное значение со словарем , Допустим, словарь имеет вид d = {'C2': 0, 'C3': 1, 'C4': 2, 'C5': 3, 'C6': 4, 'C7': 5, 'C8': 6, «C9»: 7, «CT»: 8, «CJ»: 9, «CQ»: 10, «CK»: 11, «CA»: 12, «D2»: 13, «D3»: 14, «D4» ': 15,' D5 ': 16,' D6 ': 17,' D7 ': 18,' D8 ': 19,' D9 ': 20,' DT ': 21,' DJ ': 22,' DQ ': 23, «DK»: 24, «DA»: 25, «H2»: 26, «H3»: 27, «H4»: 28, «H5»: 29, «H6»: 30, «H7»: 31, «H8»: 32, «H9»: 33, «HT»: 34, «HJ»: 35, «HQ»: 36, «HK»: 37, «HA»: 38, «S2»: 39, «S3» ': 40,' S4 ': 41,' S5 ': 42,' S6 ': 43,' S7 ': 44,' S8 ': 45,' S9 ': 46,' ST ': 47,' SJ ': 48, 'SQ': 49, 'SK': 50, 'SA': 51} это код, который я должен изменить в столбце 'card1':

testdata = read_csv()
def convert_card_to_int(c):
    if c == '' or c == ' ':
        print ('card slot is empty or a blank')
        return 0
    if c in d:
        return d.get(c)
    else:
        print ('card is not part of cardDict')
        return 0

for index, rec in testdata.iterrows():
    testdata['card1'][index] = convert_card_to_int(testdata['card1'][index])

testdata['card1'] = testdata['card1'].astype(int)

Я новичок в python и раньше не работал со словарями. Поэтому я искал некоторые форумы, но не получил ничего, что мне было нужно, возможно, я даже набирал неправильные вопросы. Проблема в том, что я хочу проверить, является ли значение списка значением словаря, и если это так, то следует заменить его целочисленным значением. Второй оператор if - это та часть, где возникает проблема. Или это на 1 oop ниже. Сообщение об ошибке сообщает мне, что это [TypeError: не подлежащий обработке тип 'dict']

testinput (file.csv):

card1,card2,card3,card4,card5
C3,H5,HK,HA,SK
C9,HJ,ST,SQ,SA
S6,S7,S8,S9,ST

testoutput:

testdata.head()
idx card1 card2 card3 card4 card5
0   1     H5    HK    HA    SK
1   7     HJ    ST    SQ    SA
2   43    S7    S8    S9    ST

1 Ответ

0 голосов
/ 28 января 2020

Я думаю, что вы ищете это

df=pd.read_csv(filepath)

d ваш словарь

d={{'C2': 0, 'C3': 1, 'C4': 2, 'C5': 3, 'C6': 4, 'C7': 5, 'C8': 6....}

, если вы хотите сделать для конкретный c столбцы Пример: card1 вы можете сделать так

df['card1'] = df['card1'].apply(lambda x:str(d[x]))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...