我试图通过使用pd.Series
对象添加一列和一行。以下是我到目前为止的情况:
import pandas as pd
df = pd.DataFrame([
{"Title": "Titanic", "ReleaseYear": 1997, "Director": "James Cameron"},
{"Title": "Spider-Man", "ReleaseYear": 2002, "Director": "Sam Raimi"}
])
# Add a new row
new_movie_row = pd.Series(['Jurassic Park', 1993, 'Steven Spielberg'])
df.loc[2] = new_row
# Add a new column
new_keyword_column = pd.Series(['Boat', 'Spider', 'Dinosaur'])
df['Keyword'] = new_keyword_column
df
这似乎增加了列fine,但是行给出了所有NaN
:
正确的方法是什么
如果要添加新行或新列,则使用对齐(这意味着尝试匹配序列索引值和数据帧列/行,如果不匹配,则获取
NaN
s表示不匹配值):您的方法很好,只需要为新行设置相同的
Series
索引值:若DataFrame的默认索引值相同,那个么默认索引是相同的,但对于一般数据也是必要的
但通常情况下,如果需要新行/列,则可以使用长度相同的列表或1d数组(如果需要相同的值,则使用标量):
为什么必须使用系列而不仅仅是列表
仅当某些输入数据丢失时,才需要按系列对齐:
也可以指定列:
如果仅使用列表获取错误:
Pandas尝试根据索引/列名进行对齐这称为^{} ,我们可以在这里使用
.tolist
这同样适用于添加列
由于索引不对齐,所以得到所有
NaN
,为了抵消这一点,可以使用.tolist()
相关问题 更多 >
编程相关推荐