Python 是否要将多个数据帧转换为特定格式?
我有两个数据帧:Python 是否要将多个数据帧转换为特定格式?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有两个数据帧: df1 = pd.DataFrame( { "database": { "0": "database1", "1": "database1", "2": "database1", }, "table": { "0": "table A", "1": "table B", "2": "table C", }, "nod
df1 = pd.DataFrame(
{
"database": {
"0": "database1",
"1": "database1",
"2": "database1",
},
"table": {
"0": "table A",
"1": "table B",
"2": "table C",
},
"node": {
"0": "node1",
"1": "node1",
"2": "node1",
},
"value": {
"0": "A1",
"1": "B1",
"2": "C1",
}
})
df2 = pd.DataFrame(
{
"database": {
"0": "database1",
"1": "database1",
"2": "database1",
},
"table": {
"0": "table B",
"1": "table C",
"2": "table D",
},
"node": {
"0": "node2",
"1": "node2",
"2": "node2",
},
"value": {
"0": "B2",
"1": "C2",
"2": "D2",
}
})
df2
df1
database table node value
0 database1 table A node1 A1
1 database1 table B node1 B1
2 database1 table C node1 C1
df2
database table node value
0 database1 table B node2 B2
1 database1 table C node2 C2
2 database1 table D node2 D2
如何将这两个数据帧转换为这种格式
Stackoverflow不允许我提交问题:看起来你的帖子大部分是代码;请添加更多详细信息。。
我添加此文本只是为了进一步传递。用于将数据帧连接在一起,然后首先与聚合函数一起使用,以便通过三元组表、数据库、节点返回第一个值:
如果可能,通过三元组表、数据库、节点进行复制,然后使用“通过联接聚合”,以避免数据丢失:
df1 = pd.DataFrame(
{
"database": {
"0": "database1",
"1": "database1",
"2": "database1",
},
"table": {
"0": "table A",
"1": "table A",
"2": "table C",
},
"node": {
"0": "node1",
"1": "node1",
"2": "node1",
},
"value": {
"0": "A1",
"1": "B1",
"2": "C1",
}
})
如果将第一个值与重复的三元组一起使用,则只返回第一个值:
df = (pd.concat([df1, df2])
.pivot_table(index='table',
columns=['database','node'],
values='value',
aggfunc='first'))
print (df)
database database1
node node1 node2
table
table A A1 NaN <- B1 is lost
table B NaN B2
table C C1 C2
table D NaN D2
用于将DataFrame连接在一起,然后首先与聚合函数一起使用,以便通过三元组表、数据库、节点返回第一个值:
如果可能,通过三元组表、数据库、节点进行复制,然后使用“通过联接聚合”,以避免数据丢失:
df1 = pd.DataFrame(
{
"database": {
"0": "database1",
"1": "database1",
"2": "database1",
},
"table": {
"0": "table A",
"1": "table A",
"2": "table C",
},
"node": {
"0": "node1",
"1": "node1",
"2": "node1",
},
"value": {
"0": "A1",
"1": "B1",
"2": "C1",
}
})
如果将第一个值与重复的三元组一起使用,则只返回第一个值:
df = (pd.concat([df1, df2])
.pivot_table(index='table',
columns=['database','node'],
values='value',
aggfunc='first'))
print (df)
database database1
node node1 node2
table
table A A1 NaN <- B1 is lost
table B NaN B2
table C C1 C2
table D NaN D2
您可以连接数据帧和数据透视:
(pd.concat((df1,df2))
.pivot_table(columns='node',
index=['database','table'],
values='value',
aggfunc='first')
.unstack('database')
.swaplevel(0,1, axis=1)
)
输出:
database database1
node node1 node2
table
table A A1 NaN
table B B1 B2
table C C1 C2
table D NaN D2
您可以连接数据帧和数据透视:
(pd.concat((df1,df2))
.pivot_table(columns='node',
index=['database','table'],
values='value',
aggfunc='first')
.unstack('database')
.swaplevel(0,1, axis=1)
)
输出:
database database1
node node1 node2
table
table A A1 NaN
table B B1 B2
table C C1 C2
table D NaN D2
谢谢你们两位。我真的很喜欢aggfunc=','。加入。谢谢你们两位。我真的很喜欢aggfunc=','。加入。