किसी भी सरल तरीके से आवंटित करने के लिए एकाधिक स्तंभों में अजगर की तरह अनुसंधान डेटा । तालिका :=

0

सवाल

मैं सोच रहा हूँ अगर वहाँ है किसी भी आसान तरीके से आवंटित करने के लिए एकाधिक स्तंभों में अजगर की तरह, := में आर data.table.

उदाहरण के लिए, अजगर में मैं लिखने के लिए है इस तरह:

df['Col_A'] = df.A/df.B
df['Col_B'] = df.C/df.D
df['Col_C'] = df.E/df.F * 1000000    
df['Col_D'] = df.G/df.H * 1000000

हालांकि, यह सिर्फ कोड की एक पंक्ति में आर data.table:

df[, ':='(Col_A = A/B, Col_B = C/D, Col_C = E/F*1000000, Col_B = G/H*1000000)]
3

सबसे अच्छा जवाब

3

आप उपयोग कर सकते हैं DataFrame.assign आवंटित करने के लिए एकाधिक स्तंभों:

df = df.assign(Col_A=df.A/df.B, Col_B=df.C/df.D, Col_C=df.E/df.F*1000000, Col_D=df.G/df.H*1000000)

उदाहरण:

df = pd.DataFrame(np.random.random((4, 8)), columns=list('ABCDEFGH'))

#           A         B  ...         H
# 0  0.771211  0.238201  ...  0.311904
# 1  0.197548  0.635218  ...  0.626639
# 2  0.332333  0.838589  ...  0.477978
# 3  0.929690  0.327412  ...  0.046179
df = df.assign(Col_A=df.A/df.B, Col_B=df.C/df.D, Col_C=df.E/df.F*1000000, Col_D=df.G/df.H*1000000)

#           A         B  ...         H     Col_A     Col_B         Col_C         Col_D
# 0  0.771211  0.238201  ...  0.311904  3.237647  1.547285  1.463586e+06  2.845234e+06
# 1  0.197548  0.635218  ...  0.626639  0.310993  1.385892  1.394466e+07  2.685293e+05
# 2  0.332333  0.838589  ...  0.477978  0.396300  0.078238  8.494174e+06  6.001031e+05
# 3  0.929690  0.327412  ...  0.046179  2.839514  0.852443  1.962892e+06  8.791233e+06

यदि आप चाहते हैं कि स्तंभ नाम में रिक्त स्थान के साथ, आप का उपयोग कर सकते हैं dict:

df = df.assign(**{'Col A': df.A/df.B, 'Col B': df.C/df.D, 'Col C': df.E/df.F*1000000, 'Col D': df.G/df.H*1000000})

#           A         B  ...         H      Col A     Col B         Col C         Col D
# 0  0.868320  0.086743  ...  0.505330  10.010311  6.680195  1.147554e+06  2.620416e+05
# 1  0.244341  0.908793  ...  0.389684   0.268863  2.388179  2.196769e+06  2.235063e+06
# 2  0.917949  0.248149  ...  0.710027   3.699188  0.453094  1.311617e+06  1.004200e+06
# 3  0.616655  0.498817  ...  0.703579   1.236235  2.186589  1.272981e+06  8.602272e+05
2021-11-14 06:53:44

धन्यवाद, मैं वास्तव में पसंद अपने समाधान है । हालांकि, मैं एक और सवाल है, क्या चाहते हैं, तो मैं आवंटित करने के लिए एक स्तंभ नाम के साथ अंतरिक्ष?
Jiamei

@Jiamei आप का उपयोग कर सकते हैं dict के लिए है कि (उत्तर अद्यतन)
tdy

एक बार फिर धन्यवाद! मैं एक और सवाल है. अगर मैं चाहता हूँ करने के लिए आवंटित एक अतिरिक्त स्तंभ संख्या की गणना के द्वारा के अद्वितीय मूल्यों में "Col_x" groupby "Col_y", कैसे होगा मैं दृष्टिकोण है कि?
Jiamei

@Jiamei की है कि तरह की तरह लगता है df.groupby("Col_y")["Col_x"].value_counts() या हो सकता है df.groupby("Col_y")["Col_x"].size()है , लेकिन उन लोगों के नहीं होगा वास्तव में फिट में वापस मूल df, तो मैं नहीं हूँ यकीन है कि अगर है कि तुम क्या मतलब है
tdy

ठीक है, तो मैं शायद गणना करने के लिए है कि अलग से और फिर मर्ज करने के लिए वापस मूल df.
Jiamei
0

होगा कुछ इस तरह आप के लिए काम:

import pandas as pd

df = pd.DataFrame()

# fake data
a = [1,2,3]
b = None, None, None
c = True, False, True

# assign to df
df[["a", "b", "c"]] = np.asarray([a, b, c]).transpose((1, 0))

जो पैदावार

   a     b      c
0  1  None   True
1  2  None  False
2  3  None   True

हालांकि एक तर्क होता है कि कोड लिखने पर कई लाइन बनाता है इसे और अधिक पठनीय.

2021-11-14 06:35:03
0

हाँ, वहाँ है एक आसान तरीका में अजगर भी

import pandas as  pd
df = pd.DataFrame({"x":[1,2,3],"y":[4,5,6]})
df[["pp","ll","nn"]]= [df["x"]/df["y"],df["x"],df["x"]]
2021-11-14 06:21:28

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में