मैं कोड के दो टुकड़े 'लिंक' करना चाहता हूं। एक,

x= df[df['Value']==True].sort_values(by='Date').head(1).Date

Out[111]:
8    2020-03-04

उस तारीख को निकालता है जहां पहला मान दिखाई देता है; दूसरा

df[df['Buy']==1].groupby('Date').size().plot(ax=ax, label='Buy')

समय के माध्यम से कुछ जानकारी की साजिश करनी चाहिए।

मैं पहली तारीख पर एक लंबवत रेखा जोड़ना चाहता हूं जहां मान सत्य है, यानी 2020-03-04। ऐसा करने के लिए, मुझे इस जानकारी को पहले कोड (कॉपी और पेस्ट का उपयोग नहीं) से कोड के दूसरे भाग में निकालने की आवश्यकता होगी जो साजिश उत्पन्न करता है। क्या आप मुझे कुछ गाइड दे सकते हैं कि यह कैसे करें? बहुत बहुत धन्यवाद

अद्यतन:

मैंने निम्नानुसार कोशिश की:

x= df[df['Value']==True].sort_values(by='Date').head(1).Date.tolist()

Out[111]:
8    ['2020-03-04']

df[df['Buy']==1].groupby('Date').size().plot(ax=ax, label='Buy')

ax.axvline(x, color="red", linestyle="--")

लेकिन मुझे एक TypeError: unhashable type: 'numpy.ndarray' मिला।

कुछ आंकड़े:

Date           Buy      Value
0   2020-02-23  0   False
1   2020-02-23  0   False
2   2020-02-25  0   False
3   2020-02-27  1   False
4   2020-03-03  1   False
5   2020-03-03  1   False
6   2020-03-03  0   False
7   2020-03-04  1   False
8   2020-03-04  0   True
9   2020-03-04  0   True
10  2020-03-04  1   False
11  2020-03-05  0   True
12  2020-03-05  1   False
13  2020-03-05  1   False
14  2020-03-05  1   False
15  2020-03-06  0   False
16  2020-03-06  1   False
17  2020-03-06  1   False
18  2020-03-07  1   False
19  2020-03-07  1   False
20  2020-03-07  1   False
21  2020-03-08  1   False
22  2020-03-08  1   False
23  2020-03-09  1   False
24  2020-03-09  1   False
25  2020-03-09  1   False
26  2020-03-10  1   False
27  2020-03-10  1   False
28  2020-03-10  1   False
29  2020-03-10  0   True
30  2020-03-11  1   False
31  2020-03-11  1   False
32  2020-03-13  0   True
33  2020-03-13  0   False
34  2020-03-15  0   True
35  2020-03-16  0   False
36  2020-03-19  0   False
37  2020-03-22  0   True
2
user14289862 28 सितंबर 2020, 02:41

1 उत्तर

सबसे बढ़िया उत्तर
  • सुनिश्चित करें कि Date कॉलम datetime प्रारूप में है।
import pandas as pd
import random  # for test data
import matplotlib.pyplot as plt

# setup sample data
random.seed(365)
rows = 40
data = {'Date': [random.choice(pd.bdate_range('2020-02-23', freq='d', periods=rows).strftime('%Y-%m-%d').tolist()) for _ in range(rows)],
        'Buy': [random.choice([0, 1]) for _ in range(rows)],
        'Value': [random.choice([False, True]) for _ in range(rows)]}

df = pd.DataFrame(data)

# set the Date column to a datetime
df.Date = pd.to_datetime(df.Date)

# extract values
x = df[df['Value']==True].sort_values(by='Date').head(1).Date

# groupby and plot
ax = df[df['Buy']==1].groupby('Date').size().plot(figsize=(7, 5), label='Buy')

# plot the vertical line; axvline works as long as x is one value
ax.axvline(x, color="red", linestyle="--", label='my value') 

# show the legend
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')

enter image description here

पैकेज संस्करण

import matplotlib as mpl

print(mpl.__version__)
print(pd.__version__)

[out]:
3.3.1
1.1.0
1
Trenton McKinney 28 सितंबर 2020, 04:05