我从某个地方收到了一个DataFrame,并希望创建另一个具有相同数量和列和行(索引)名称的DataFrame.例如,假设原始数据框被创建为
import pandas as pd
df1 = pd.DataFrame([[11,12],[21,22]], columns=['c1','c2'], index=['i1','i2'])
Run Code Online (Sandbox Code Playgroud)
我通过显式定义列和名称来复制结构:
df2 = pd.DataFrame(columns=df1.columns, index=df1.index)
Run Code Online (Sandbox Code Playgroud)
我不想复制数据,否则我就可以写了df2 = df1.copy().换句话说,在创建df2之后,它必须只包含NaN元素:
In [1]: df1
Out[1]:
c1 c2
i1 11 12
i2 21 22
In [2]: df2
Out[2]:
c1 c2
i1 NaN NaN
i2 NaN NaN
Run Code Online (Sandbox Code Playgroud)
有没有更惯用的方式呢?
我知道这一点pack,pack_forget可用于显示或隐藏小部件。哪些是画布上项目的等效命令?
注意:最好保留完整的物品信息,包括它的位置。pack/不是这种情况pack_forget,您需要在使用 pack 时再次通知位置。
我想从csv文件中读取数据帧,其中标题不在第一行.例如:
In [1]: import pandas as pd
In [2]: import io
In [3]: temp=u"""#Comment 1
...: #Comment 2
...:
...: #The previous line is empty
...: Header1|Header2|Header3
...: 1|2|3
...: 4|5|6
...: 7|8|9"""
In [4]: df = pd.read_csv(io.StringIO(temp), sep="|", comment="#",
...: skiprows=4).dropna()
In [5]: df
Out[5]:
Header1 Header2 Header3
0 1 2 3
1 4 5 6
2 7 8 9
[3 rows x 3 columns]
Run Code Online (Sandbox Code Playgroud)
上面代码的问题是我现在没有在标题之前存在多少行,因此,我不能skiprows=4像我在这里那样使用.
我知道我可以遍历文件,就像从非修复头开始从csv读取pandas数据帧一样.
我正在寻找的是一个更简单的解决方案,比如pandas.read_csv忽略任何空行并将第一个非空行作为标题.