【问题标题】:Append a list of values with mixed types in Python to data frame将 Python 中具有混合类型的值列表附加到数据框中
【发布时间】:2017-05-15 04:28:27
【问题描述】:

我有一个使用 pandas.read_csv 从 csv 读取的数据框,数据框的每一行如下所示:

[1, '10/18/2016 06:00', 1, 14, 0, 5.5]

基本上,它由整数、字符串和浮点数组成。现在,我想根据现有数据生成更多数据(新行)并附加到原始数据框中。当我尝试使用以下代码调用函数append 时:

df.append(list(newrow))

我得到了错误:

RuntimeWarning: unorderable types: str() < int(), sort order is undefined for incomparable objects. 
result = result.union(other)

我认为 string 类型在这里很顽皮,但我没有找到实现这一点的方法。

另外我也试过先把df转换成df.values,再用numpy.vstack(df.values, numpy.array(newrow))。但是,这段代码的结果变成了

['1', '10/18/2016 06:00', '1', '14', '0', '5.5']

其中所有字段都变为字符串。任何帮助表示赞赏。

【问题讨论】:

  • 你能举一个你的 df 和 newrow 的简短例子吗?

标签: python pandas numpy data-processing


【解决方案1】:

这行得通吗?

#build a DataFrame first using the list and column names from original DF.
df.append(pd.DataFrame(columns=df.columns,data=[newrow]))

【讨论】:

  • 感谢您的快速回复,这有效!那么这与我的代码中的df.append(list()) 有何不同?为什么那里有错误,这里没有?
  • df.append 只接受 DataFrame、Series/dict-like 对象。因此,直接附加列表将失败。此解决方案首先使用原始 df 中的列表和列名称构建 DataFrame,这就是它起作用的原因。
【解决方案2】:

这似乎适用于附加到空数据框。 列必须匹配

column_titles = ['col1','col2']
data = ['1', '10/18/2016 06:00', '1', '14', '0', '5.5']

# creates empty df w/headers
df = pd.DataFrame(columns = column_titles)

df2 = pd.DataFrame([data])

df = df.append(df2)

【讨论】:

    猜你喜欢
    • 2019-09-08
    • 2023-01-01
    • 1970-01-01
    • 2019-10-12
    • 2020-09-27
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多