Sub*_*ndu 5 python python-2.7 pandas
我有一段 Python 代码,基本上可以简化为以下内容:
import pandas as pd
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
l = [1607.8, 1688.17, 1605.66, 1469.03, 1312.65, 1451.74, 1445.26, 1350.94, 1371.27, 1201.6, 1240.59, 1291.43]
# First, construct a empty DataFrame.
df = pd.DataFrame(columns = months, dtype=float)
# Then, keep adding rows to DataFrame given by list l.
df.append([l])
print df
Run Code Online (Sandbox Code Playgroud)
预期输出为:
Jan Feb Mar Apr May Jun Jul Aug \
0 1607.8 1688.17 1605.66 1469.03 1312.65 1451.74 1445.26 1350.94
Sep Oct Nov Dec
0 1371.27 1201.6 1240.59 1291.43
Run Code Online (Sandbox Code Playgroud)
但是我得到的是以下内容:
Empty DataFrame
Columns: [Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
Index: []
Run Code Online (Sandbox Code Playgroud)
如果我替换df.append([l])为以下内容,则对我来说一切正常。
df = pd.DataFrame([l], columns = months)
df.columns = months
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
您应该使用pd.DataFrame.loc给定列表添加一行l:
df.loc[len(df.index)+1] = l
Run Code Online (Sandbox Code Playgroud)
该方法pd.DataFrame.append用于将一个数据帧或其他可附加对象附加到现有数据帧:
DataFrame.append(其他,ignore_index=False,verify_integrity=False,sort=None)
将其他行附加到此帧的末尾
但是,形成一个列表列表然后pd.DataFrame.append只调用一次会更有效。
list_of_lists = []
for item in some_iterable:
l = foo(item)
list_of_lists.append(l)
df = df.append(pd.DataFrame(list_of_lists, columns=df.columns))
Run Code Online (Sandbox Code Playgroud)
这样做的原因list.append是比pd.DataFrame.loc分配便宜。
| 归档时间: |
|
| 查看次数: |
9652 次 |
| 最近记录: |