私は自分自身が非常に頻繁にやらなければならないことが1つあり、パンダでこれを達成することがどれほど難しいか驚いています。指定したインデックスタイプと名前、カラムのタイプと名前を持つ空のDataFrame
を作成する必要があるとします。 (これは後でループで記入するといいかもしれません。)これを行う最も簡単な方法は、空のpandas.Series
オブジェクトを各列に作成し、dtype
を指定して、名前を指定し、辞書をDataFrame
コンストラクタに渡します。次のようなものPython Pandas、カラムdtypesを指定する空のDataFrameを作成
def create_empty_dataframe():
index = pandas.Index([], name="id", dtype=int)
column_names = ["name", "score", "height", "weight"]
series = [pandas.Series(dtype=str), pandas.Series(dtype=int), pandas.Series(dtype=float), pandas.Series(dtype=float)]
columns = dict(zip(column_names, series))
return pandas.DataFrame(columns, index=index, columns=column_names)
# The columns=column_names is required because the dictionary will in general put the columns in arbitrary order.
最初の質問です。上記は本当にこれを行う最も簡単な方法ですか?これについて畳み込まれているものはたくさんあります。私が本当にやりたいこと、そして本当にたくさんの人が本当にやりたいことは、次のようなものです。
df = pandas.DataFrame(columns=["id", "name", "score", "height", "weight"], dtypes=[int, str, int, float, float], index_column="id")
2番目の質問です。パンダで可能な限り文法はありますか?そうでない場合、開発者はこれのような何かをサポートすることを検討していますか?それは本当にこのような単純なものでなければならないと感じています(上記の構文)。
ニースチート!だから、あなたが不正行為をすることなく、私の巻き込まれた方法は本当にそれをやるのが一番簡単な方法だと言っていますか? – Ray
私は 'read_csv'を使うのが最も簡単な方法だと思います。標準の' DataFrame' ctorに比べて柔軟性があります。空のファイルを意図的に読んでいる点を除いて不正ではありません – EdChum