在Pandas中附加到空数据框?

eri*_*mjl 188 python pandas

是否可以附加到不包含任何索引或列的空数据框?

我试图这样做,但最后继续得到一个空的数据帧.

例如

df = pd.DataFrame()
data = ['some kind of data here' --> I have checked the type already, and it is a dataframe]
df.append(data)
Run Code Online (Sandbox Code Playgroud)

结果如下:

Empty DataFrame
Columns: []
Index: []
Run Code Online (Sandbox Code Playgroud)

DSM*_*DSM 349

这应该工作:

>>> df = pd.DataFrame()
>>> data = pd.DataFrame({"A": range(3)})
>>> df.append(data)
   A
0  0
1  1
2  2
Run Code Online (Sandbox Code Playgroud)

但是append没有就地发生,所以如果你需要它你必须存储输出:

>>> df
Empty DataFrame
Columns: []
Index: []
>>> df = df.append(data)
>>> df
   A
0  0
1  1
2  2
Run Code Online (Sandbox Code Playgroud)

  • 实际上,附加不会发生在这里是最重要的信息;) (57认同)
  • 我总是忘记你需要分配它! (7认同)
  • 不知道为什么[Pandas](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.append.html)示例没有显示出来.谢谢你的帮助! (6认同)
  • 谢谢!那很有效!我没有意识到我必须存储输出......我可能应该更好地阅读文档,但我很感激,@ DSM! (5认同)
  • 请注意,至少在 2018 年 6 月,如果您希望新行自行自动索引,则应编写 df.append(data, ignore_index=True)。谢谢你的好回答! (4认同)
  • `FutureWarning`:`frame.append` 方法已弃用,并将在未来版本中从 pandas 中删除。请改用“pandas.concat”。 (3认同)

dva*_*val 92

如果要添加行,可以使用字典:

df = pd.DataFrame()
df = df.append({'name': 'Zed', 'age': 9, 'height': 2}, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

这给你:

   age  height name
0    9       2  Zed
Run Code Online (Sandbox Code Playgroud)

  • 你能把它与其他提议的替代方案联系起来吗,@raullalves? (5认同)
  • `FutureWarning`:`frame.append` 方法已弃用,并将在未来版本中从 `pandas` 中删除。请改用“pandas.concat”。 (3认同)

Dee*_*ish 20

您可以通过以下方式连接数据:

InfoDF = pd.DataFrame()
tempDF = pd.DataFrame(rows,columns=['id','min_date'])

InfoDF = pd.concat([InfoDF,tempDF])
Run Code Online (Sandbox Code Playgroud)

  • 什么是行/列?@Deepish (2认同)

小智 18

这些答案非常有用,但由于pandas.DataFrame.append已被弃用(正如各个用户已经提到的那样),并且使用的答案pandas.concat不是“可运行的代码片段”,我想添加以下片段:

import pandas as pd

df = pd.DataFrame(columns =['name','age'])
row_to_append = pd.DataFrame([{'name':"Alice", 'age':"25"},{'name':"Bob", 'age':"32"}])
df = pd.concat([df,row_to_append])
Run Code Online (Sandbox Code Playgroud)

现在也是如此df

    name age
0  Alice  25
1    Bob  32
Run Code Online (Sandbox Code Playgroud)


Wto*_*wer 6

pandas.DataFrame.append自版本 1.4.0 起已弃用:请使用concat()

所以:

df = pd.DataFrame() # empty dataframe
df2 = pd..DataFrame(...) # some dataframe with data

df = pd.concat([df, df2])
Run Code Online (Sandbox Code Playgroud)