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。我该如何解决?
答案 0 :(得分:1)
传递字典时,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))