我创建了一个数据框,我需要执行两个操作:
- 转换为列表
- 将相同的列表转换回具有原始列名称的数据框。
问题:当我第一次转换为列表时,我丢失了列名称,当我转换回数据帧时,我没有得到这些列名称
请帮忙!
import pandas as pd
data = [['tom', 10], ['nick', 15], ['juli', 14]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
#convert df to list
a=df.values.tolist()
#convert back to original dataframe
df1 = pd.DataFrame(a)
print(df1)
电流输出
我无法获取列名称
最佳答案
您需要通过df.columns
传递列名称,如果没有默认索引也需要传递它:
df1 = pd.DataFrame(a, columns=df.columns, index=df.index)
如果原始DataFrame
中默认RangeIndex
:
df1 = pd.DataFrame(a, columns=df.columns)
编辑:
如果需要一些类似的结构,请使用DataFrame.to_dict
使用 orient='split'
将 DataFrame
转换为列名、索引和数据的字典,例如:
data = [['tom', 10], ['nick', 15], ['juli', 14]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
d = df.to_dict(orient='split')
print (d)
{'index': [0, 1, 2],
'columns': ['Name', 'Age'],
'data': [['tom', 10], ['nick', 15], ['juli', 14]]}
对于原始 DataFrame 的使用:
df2 = pd.DataFrame(d['data'], index=d['index'], columns=d['columns'])
print (df2)
Name Age
0 tom 10
1 nick 15
2 juli 14
关于python - 丢失列名从列表转换回数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68314774/