Python 如何在列具有混合数据类型的情况下添加两行?
我有一个如下所示的数据框:Python 如何在列具有混合数据类型的情况下添加两行?,python,python-3.x,pandas,csv,Python,Python 3.x,Pandas,Csv,我有一个如下所示的数据框: 现在,我想为1和2列中的值添加第2行和第3行 所以输出应该是 0 1 2 Time Blocks Left Blocks Added 0 NaN Monday Tuesday 1 NaN 2020-01-01 2020-01-02 2 01:00:00 44
现在,我想为1和2列中的值添加第2行和第3行 所以输出应该是
0 1 2
Time Blocks Left Blocks Added
0 NaN Monday Tuesday
1 NaN 2020-01-01 2020-01-02
2 01:00:00 44 1420
3 02:00:00 55 1520
4 03:00:00 65 1000
5 04:00:00 75 1110
99 2940
但是,由于第1列和第2列在第1行中包含日期,因此熊猫将整个列检测为对象数据类型,因此有人能告诉我在这种情况下如何进行添加吗?我认为更好的方法是使用列中具有多索引的DataFrame,而不是将数据与元数据混合:
df = df.set_index(0)
t = df.iloc[:3].apply(tuple).tolist()
df.columns = pd.MultiIndex.from_tuples(t)
df = df.iloc[3:].astype(int).rename_axis(None)
print (df)
Blocks Left Blocks Added
Monday Tuesday
2020-01-01 2020-01-02
01:00:00 44 1420
02:00:00 55 1520
03:00:00 65 1000
04:00:00 75 1110
如果可能,在read\u csv
中使用列中的多索引创建DataFrame
:
df = pd.read_csv(file, index_col=[0], header=[0,1,2])
然后,您可以通过以下方式添加新行:
你可以试试这个
df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
df
A B
0 1 2
1 3 4
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
df.append(df2)
A B
0 1 2
1 3 4
0 5 6
1 7 8
如果您可以提供一个代码来复制输入数据帧就更好了,因为它是一个mulltiindex,并且很难复制和复制
df.loc['05:00:00'] = [99, 2940]
print (df)
Blocks Left Blocks Added
Monday Tuesday
2020-01-01 2020-01-02
01:00:00 44 1420
02:00:00 55 1520
03:00:00 65 1000
04:00:00 75 1110
05:00:00 99 2940
df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
df
A B
0 1 2
1 3 4
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
df.append(df2)
A B
0 1 2
1 3 4
0 5 6
1 7 8