[英]Read lists into columns of pandas DataFrame
I want to load lists into columns of a pandas DataFrame but cannot seem to do this simply. 我想将列表加载到pandas DataFrame的列中,但似乎无法简单地执行此操作。 This is an example of what I want using
transpose()
but I would think that is unnecessary: 这是我想要使用
transpose()
一个例子,但我认为这是不必要的:
In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: x = np.linspace(0,np.pi,10)
In [4]: y = np.sin(x)
In [5]: data = pd.DataFrame(data=[x,y]).transpose()
In [6]: data.columns = ['x', 'sin(x)']
In [7]: data
Out[7]:
x sin(x)
0 0.000000 0.000000e+00
1 0.349066 3.420201e-01
2 0.698132 6.427876e-01
3 1.047198 8.660254e-01
4 1.396263 9.848078e-01
5 1.745329 9.848078e-01
6 2.094395 8.660254e-01
7 2.443461 6.427876e-01
8 2.792527 3.420201e-01
9 3.141593 1.224647e-16
[10 rows x 2 columns]
Is there a way to directly load each list into a column to eliminate the transpose and insert the column labels when creating the DataFrame? 有没有办法直接将每个列表加载到列中以消除转置并在创建DataFrame时插入列标签?
Someone just recommended creating a dictionary from the data then loading that into the DataFrame like this: 有人建议从数据中创建一个字典,然后将其加载到DataFrame中,如下所示:
In [8]: data = pd.DataFrame({'x': x, 'sin(x)': y})
In [9]: data
Out[9]:
x sin(x)
0 0.000000 0.000000e+00
1 0.349066 3.420201e-01
2 0.698132 6.427876e-01
3 1.047198 8.660254e-01
4 1.396263 9.848078e-01
5 1.745329 9.848078e-01
6 2.094395 8.660254e-01
7 2.443461 6.427876e-01
8 2.792527 3.420201e-01
9 3.141593 1.224647e-16
[10 rows x 2 columns]
Note than a dictionary is an unordered set of key-value pairs. 注意,字典是一组无序的键值对。 If you care about the column orders, you should pass a list of the ordered key values to be used (you can also use this list to only include some of the dict entries):
如果您关心列顺序,则应传递要使用的有序键值列表(您也可以使用此列表仅包含一些dict条目):
data = pd.DataFrame({'x': x, 'sin(x)': y}, columns=['x', 'sin(x)'])
这是另一个保留指定顺序的1行解决方案,无需输入x
和sin(x)
两次:
data = pd.concat([pd.Series(x,name='x'),pd.Series(y,name='sin(x)')], axis=1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.