合并 2 pandas 个表并使用它们
Merging 2 pandas tables and using them
我有 2 只熊猫 table,
table A 是这样的:
Date a b c d e
0
...
.
.
.
2n
和table B 有类似的东西
Date f g k h i j
2
.
.
..
.
.
2n-3
.
问题是每个 table 都有完全不同的日期和完全不同的列,但我想得到一个新的 table 和 0 如果它是一个以前没有的列,还有一个新的二进制列(我们称之为 MARK),它标记它是来自 table A 还是 B。
像这样:
Date MARK a b c d e f g e h i j
0 1 . . . . . 0 0 0 0 0 0
.
2 0 0 0 0 0 0 . . . . . .
.
.
.
.
.
2n-3 0 0 0 0 0 0 . . . . . .
.
.
2n 1 . . . . . 0 0 0 0 0 0
我需要按日期排序...请帮助我...
谢谢
在 :
之前添加 'Mark' 列
df1['Mark'] = 0
df2['Mark'] = 1
然后 pd.concat 做你想做的事 :
df = pd.concat([df1, df2], axis = 0, sort= True)
注意:确保您的日期是两者的索引:
df1 = df1.set_index('date_column')
df2 = df2.set_index('date_column')
其他选项是使用合并指标功能:
df = df1.merge(df2, on='Date', how='outer', indicator='Mark')
这将用 left_only 或 right_only 指示数据来自哪个数据帧。
您可以像这样将其更改为 0 和 1:
df['Mark'] = (df['Mark'] == 'right_only').astype(int)
完整示例:
df1 = pd.DataFrame(
data={'Date': pd.date_range('2019-01-01', '2019-01-03'),
'a': [1,1,1],
'b': [2,2,2]})
df2 = pd.DataFrame(
data={'Date': pd.date_range('2019-01-11', '2019-01-13'),
'c': [3,3,3],
'd': [4,4,4]})
df = df1.merge(df2, on='Date', how='outer', indicator='Mark')
df['Mark'] = (df['Mark'] == 'right_only').astype(int)
我有 2 只熊猫 table, table A 是这样的:
Date a b c d e
0
...
.
.
.
2n
和table B 有类似的东西
Date f g k h i j
2
.
.
..
.
.
2n-3
.
问题是每个 table 都有完全不同的日期和完全不同的列,但我想得到一个新的 table 和 0 如果它是一个以前没有的列,还有一个新的二进制列(我们称之为 MARK),它标记它是来自 table A 还是 B。 像这样:
Date MARK a b c d e f g e h i j
0 1 . . . . . 0 0 0 0 0 0
.
2 0 0 0 0 0 0 . . . . . .
.
.
.
.
.
2n-3 0 0 0 0 0 0 . . . . . .
.
.
2n 1 . . . . . 0 0 0 0 0 0
我需要按日期排序...请帮助我... 谢谢
在 :
之前添加 'Mark' 列df1['Mark'] = 0
df2['Mark'] = 1
然后 pd.concat 做你想做的事 :
df = pd.concat([df1, df2], axis = 0, sort= True)
注意:确保您的日期是两者的索引:
df1 = df1.set_index('date_column')
df2 = df2.set_index('date_column')
其他选项是使用合并指标功能:
df = df1.merge(df2, on='Date', how='outer', indicator='Mark')
这将用 left_only 或 right_only 指示数据来自哪个数据帧。 您可以像这样将其更改为 0 和 1:
df['Mark'] = (df['Mark'] == 'right_only').astype(int)
完整示例:
df1 = pd.DataFrame(
data={'Date': pd.date_range('2019-01-01', '2019-01-03'),
'a': [1,1,1],
'b': [2,2,2]})
df2 = pd.DataFrame(
data={'Date': pd.date_range('2019-01-11', '2019-01-13'),
'c': [3,3,3],
'd': [4,4,4]})
df = df1.merge(df2, on='Date', how='outer', indicator='Mark')
df['Mark'] = (df['Mark'] == 'right_only').astype(int)