如何将多个相同大小的熊猫数据框组合到一个内聚数据库中?

时间:2019-01-17 15:31:58

标签: python pandas python-2.7

我正在尝试使用大小相同的各种熊猫数据帧构建数据库。我想为数据框中的每个点分配所有其他点。

我得到这样的东西:

数据帧1:

```{r}
valid_markdown <- your_function()
```

(ref:my_hack) `r valid_markdown`

```{block2, type="block"}
(ref:my_hack)

```

数据框2:

   1  2  3  4  
 1 A  B  C  D  
 2 A  B  C  D  
 3 A  B  C  D  

最终数据帧(类似这样)

   1  2  3  4  
 1 A  D  G  J
 2 B  E  H  K
 3 C  F  I  L

3 个答案:

答案 0 :(得分:1)

您可以添加两个数据帧中的值,以及两者之间的分隔符,并使用str.split遍历列以创建列表。最后使用pd.concat将结果转换为数据框:

df = df1 + ',' + df2
pd.concat([df[col].str.split(',') for col in df.columns], axis=1)

     1       2       3       4
1  [A, A]  [B, D]  [C, G]  [D, J]
2  [A, B]  [B, E]  [C, H]  [D, K]
3  [A, C]  [B, F]  [C, I]  [D, L]

或使用DataFrame.combine

df1.combine(df2, func=lambda a,b: (a + ',' + b).str.split(','))

     1       2       3       4
1  [A, A]  [B, D]  [C, G]  [D, J]
2  [A, B]  [B, E]  [C, H]  [D, K]
3  [A, C]  [B, F]  [C, I]  [D, L]

答案 1 :(得分:1)

检查

<script>window.ShopifyAnalytics = window.ShopifyAnalytics || {};
window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
window.ShopifyAnalytics.meta.currency = 'USD';
var meta = {"product":{"id":2008798101573,"vendor":"Adidas","type":"Sneakers","variants":[{"id":19054898249797,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 3","public_title":"3","sku":"98197426"},{"id":19054898282565,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 3.5","public_title":"3.5","sku":"98197427"},{"id":19054898315333,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 4","public_title":"4","sku":"98197428"},{"id":19054898348101,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 4.5","public_title":"4.5","sku":"98197429"},{"id":19054898380869,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 5","public_title":"5","sku":"191525030983"},{"id":19054898413637,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 5.5","public_title":"5.5","sku":"191525030952"},{"id":19054898446405,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 6","public_title":"6","sku":"191525030938"},{"id":19054898479173,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 6.5","public_title":"6.5","sku":"191525030914"},{"id":19054898511941,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 7","public_title":"7","sku":"191525030907"},{"id":19054898544709,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 7.5","public_title":"7.5","sku":"191525030976"},{"id":19054898577477,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 8","public_title":"8","sku":"191525031010"},{"id":19054898610245,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 8.5","public_title":"8.5","sku":"191525030990"},{"id":19054898643013,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 9","public_title":"9","sku":"191525031027"},{"id":19054898675781,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 9.5","public_title":"9.5","sku":"191525030921"},{"id":19054898708549,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 10","public_title":"10","sku":"191525030969"},{"id":19054898741317,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 10.5","public_title":"10.5","sku":"191525030945"},{"id":19054898774085,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 11","public_title":"11","sku":"191525031003"},{"id":19054898806853,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 11.5","public_title":"11.5","sku":"98197443"},{"id":19054898839621,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 12","public_title":"12","sku":"98197444"},{"id":19054898872389,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 12.5","public_title":"12.5","sku":"98197445"},{"id":19054898905157,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 13","public_title":"13","sku":"98197446"},{"id":19054898937925,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 13.5","public_title":"13.5","sku":"98197447"},{"id":19054898970693,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 14","public_title":"14","sku":"98197448"},{"id":19054899003461,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 14.5","public_title":"14.5","sku":"98197449"},{"id":19054899036229,"price":13000,"name":"adidas Originals WMNS Falcon - Ash Pearl \/ Off White - 15","public_title":"15","sku":"98197450"}]},"page":{"pageType":"product","resourceType":"product","resourceId":2008798101573}};
for (var attr in meta) {
 window.ShopifyAnalytics.meta[attr] = meta[attr];
}</script>

如果我是我,我将关注多个索引而不是列表类型的列

pd.concat([df1,df2],1).groupby(level=0,axis=1).agg(lambda x : x.values.tolist())
Out[529]: 
        1       2       3       4
1  [A, A]  [B, D]  [C, G]  [D, J]
2  [A, B]  [B, E]  [C, H]  [D, K]
3  [A, C]  [B, F]  [C, I]  [D, L]

答案 2 :(得分:0)

效率不高,但是您可以将所有单元格转换为列表,然后只需添加如下数据框即可:

bluetoothAdapter.getBluetoothLeScanner()

输出

import pandas as pd
import numpy as np
np.random.seed(42)

df1 = pd.DataFrame(
    [list('ABCD') for _ in range(5)]
)
df2 = pd.DataFrame(
    [np.random.choice(list('ABCD'), size=4).tolist() for _ in range(5)]
)

df1 = df1.apply(lambda x: [[v] for v in x])
df2 = df2.apply(lambda x: [[v] for v in x])

df1 + df2