Панды Вставьте словарные значения в несколько столбцов в последней строке - PullRequest
0 голосов
/ 13 июня 2018

У меня проблема с добавлением значений в указанные столбцы.Пожалуйста, обратитесь к приведенным ниже кодам для вашего понимания.

[Возможный вариант, но я действительно не хочу добавлять значения None в пустые места.]

a3 = '[10:17:47-579318]A3016KR4167N30003007G1 0001189300000240101747570000000000000000 00011925 00011935 00011892 000118920019265002293475210000000000000000002 00012000 00011786'

df_0 = pd.DataFrame(columns = ['time', 'cur_p', 'exec_q', 'inv_t', 'l_lvl1_q', 's_lvl1_q', 'inv_l_q', 'inv_s_q', 's_or_l'])

b0_dic = {'time': a3[:17],
           'cur_p': None,
           'exec_q': None,
           'inv_t': None,
           'l_lvl1_q': a3[57:63],
           's_lvl1_q': a3[139:145],
           'inv_l_q': None,
           'inv_s_q': None,
           's_or_l': None,}   
df_0.loc[len(df_0)] = b0_dic
df_0

Поскольку приведенный выше код действительно бесполезен, так как он занимает много времени для больших наборов данных,

Я хотел бы заставить его работать, как показано ниже, код

data0 = pd.DataFrame(columns = ['time', 'cur_p', 'exec_q', 'inv_t', 
                             'l_lvl1_q', 's_lvl1_q',
                              'inv_l_q', 'inv_s_q', 's_or_l'])
dic = {'time': a3[:17],
       'cur_p': a3[40:48],
       'exec_q': a3[48:54],
       's_or_l': a3[152:153]}
data0.loc[len(data0)] = dic
data0

но мне выдается код ошибки:

"ValueError: невозможно установить строку с несовпадающими столбцами"

Пожалуйста, дайте мне знать, как я могу разработать код

Большое спасибо заранее.

1 Ответ

0 голосов
/ 13 июня 2018

Вы можете использовать это:

df_0 = pd.DataFrame(columns = ['time', 'cur_p', 'exec_q', 'inv_t', 'l_lvl1_q', 
                               's_lvl1_q', 'inv_l_q', 'inv_s_q', 's_or_l'])

df_0.loc[len(df_0), ['time', 'cur_p', 'exec_q', 's_or_l']] = [a3[:17], 
                                                  a3[40:48], a3[48:54], a3[152:153]]
df_0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...