हैलो दोस्तों मैं अजगर में काफी नया हूं और मुझे नहीं पता कि इस मुद्दे को कैसे हल किया जाए। मेरे पास निम्न कोड है:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df1 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])
df2 = pd.DataFrame(np.array([10, 20, 30]), columns=['d'])
df3 = pd.DataFrame(np.array([11, 21, 31, 32]), columns=['e'])

df1 = df1.join(df2['d'])
df1 = df1.join(df3['e'])
print(df1)

परिणाम जो मुझे मिलता है:

   a  b  c   d   e
0  1  2  3  10  11
1  4  5  6  20  21
2  7  8  9  30  31

परिणाम जो मैं प्राप्त करना चाहूंगा

   a   b   c    d   e
0  1   2   3   10  11
1  4   5   6   20  21
2  7   8   9   30  31
3 Nan Nan Nan Nan  32

पिछला उदाहरण मेरी समस्या को पुन: पेश करने के लिए एक न्यूनतम कोड था। मुद्दा यह है कि मैं एक कॉलम जोड़ना चाहता हूं लेकिन मैं यह नहीं मान सकता कि सभी कॉलम की लंबाई समान है। बहुत अंत में परिणामी डेटाफ़्रेम में सबसे लंबी श्रृंखला की लंबाई के बराबर पंक्तियों की संख्या होनी चाहिए और अन्य स्तंभों को NaN मान से भरा जाना चाहिए।

0
GJCode 20 फरवरी 2021, 18:51

2 जवाब

सबसे बढ़िया उत्तर

आप concat को डिफ़ॉल्ट रूप से outer के रूप में आजमा सकते हैं

pd.concat((df1,df2,df3),axis=1)

या

outer शामिल होने का प्रयास करें

df1 = df1.join(df2['d'], how='outer')
df1 = df1.join(df3['e'], how='outer')
print(df1)
   a    b    c     d   e
0  1.0  2.0  3.0  10.0  11
1  4.0  5.0  6.0  20.0  21
2  7.0  8.0  9.0  30.0  31
3  NaN  NaN  NaN   NaN  32
2
anky 20 फरवरी 2021, 19:27

अंतिम जुड़ाव में एक साथ जुड़ने वाली दो वस्तुओं के संचालन को संभालने का तरीका जोड़ें।

df1 = df1.join(df3['e']) डिफ़ॉल्ट कैसा है left

आप right या outer दोनों का उपयोग कर सकते हैं

[यहां कोड]

df1 = df1.join(df3['e'], how='right')

या

df1 = df1.join(df3['e'], how='outer')

[यहाँ परिणाम]

1 2

अधिक संपूर्ण जानकारी के लिए आप यहां दस्तावेज़ीकरण पढ़ सकते हैं: https://pandas.pydata.org/ pandas-docs/stable/reference/api/pandas.DataFrame.join.html

1
alluraendless 20 फरवरी 2021, 19:15