import pandas as pd
df_dict = {'k1':(1,2,3),'k2':(20,30,40),'k3':(30,40,50),'k4':[100,200,300]}
data_Frame_dict = pd.DataFrame(data=df_dict,index=['k11','k22','k33'],columns=['s1','s2','s3','s4'])
data_Frame_dict
s1 s2 s3 s4
k11 NaN NaN NaN NaN
k22 NaN NaN NaN NaN
k33 NaN NaN NaN NaN
это делает все данные в кадре данных NAN. как я могу решить это?
При передаче словаря аргумент columns
используется для выбора ключей из словаря для использования в качестве столбцов. Чтобы увидеть, что я имею в виду, вот пример:
pd.DataFrame(df_dict, columns=['k1', 'k4'])
k1 k4
0 1 100
1 2 200
2 3 300
Если переданные вами значения столбца отсутствуют в словаре, то столбец вставляется как столбец, заполненный NaN. В качестве другого примера см.
pd.DataFrame(df_dict, columns=['k1', 'k4', 'dummy_col'])
k1 k4 dummy_col
0 1 100 NaN
1 2 200 NaN
2 3 300 NaN
Что вы можете сделать, это использовать оригинальные имена столбцов, а затем переименовать их в качестве второго шага.
df = pd.DataFrame(data=df_dict, index=['k11','k22','k33'])
df.columns = ['s1','s2','s3','s4']
Имейте в виду, что упорядочение столбцов может не обязательно отражать фактическое упорядочение столбцов, поскольку оно зависит от того, поддерживает ли ваша реализация python упорядоченные словари или нет (предупреждение о спойлере, оно поддерживается только в 3. 6+).
Что я предлагаю
col_mapping = {'k1': 's1', 'k2': 's2', ...}
df = (pd.DataFrame(data=df_dict, index=['k11','k22','k33'])
.rename(col_mapping, axis=1))